As others have clearly pointed out, ^ matches only at the beginning of a string. Another way to make \G and ^ work in your scenario would be to lop off each match as you go (and the /c modifier is useless in this case, so it has been removed).
#!/usr/bin/perl use warnings; use strict; my $string = " a 1 # "; my $i = 0; while () { if ( $string =~ s/^\G\s+//g ) { print "whitespace\n"; } elsif ( $string =~ s/^\G[0-9]+//g ) { print "integer\n"; } elsif ( $string =~ s/^\G\w+//g ) { print "word\n"; } else { print "done\n"; last; } }
I can't see much use for both being used in the same context in your case though. Found in the perlretut is use re 'debug';. Very helpful for things like this to see why parts of a regex aren't (or are) matching.
-stevieb
In reply to Re: anchor ^ and \G
by stevieb
in thread anchor ^ and \G
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |