in reply to anchor ^ and \G

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