That was easier: #!/usr/bin/perl use strict; use warnings;
#my $line = "1elem21elema2a 1 bad13elema2eone 1 bad 1elemb2bone 2 bad1elemc2c13elemc2btwo13elemb2etwo13elem2"; my $line = "<elem1><elema>a < bad</elema>e1 < bad <elemb>b1 > bad<elemc>c</elemc>b2</elemb>e2</elem1>"; my $cnt = 0; my @insides = $line =~ m{ <elem1>(.*?)<\/elem1> }gmsx; for my $inside ( @insides ){ print $inside; while( $inside =~ m{ <([^\s<\/]*)> }gmsx ){ my $element = $1; $cnt = $cnt +1; # unless( $element =~ m{ \A \/ }msx ){ print "\n$cnt=$1\n"; } #} } 4 any one to use :) Let me know if you see any problems... Thanks again everyone! --- On Thu, 1/8/09, Paul M <pjm...@yahoo.com> wrote: From: Paul M <pjm...@yahoo.com> Subject: RegExp Searching - part deux To: beginners@perl.org Date: Thursday, January 8, 2009, 8:18 AM What happens if I have a simple string: my $line = "1elem21elema2a 1 bad13elema2 1 bad elemb2 bad 2 z 1elemc2c13elemc2b13elemb2e13elem2"; That must follow simply rules: Find every alpha character string between the numbers one and two. The string may not include the number one two or three. SO: 1 bad13elema2 = no good, contains 1 and 3 1 bad 1elemb2 = no good, contains space 13elema2 = no good, contains 3 ???