$\ = "\n"; my $re; $re = qr/ a (??{ $re }) c | b /x; print 'aabcc' =~ /^$re/ ||0; # 1 print '!aabcc' =~ /^$re/ ||0; # 0 First call is anchored to start. print 'a!abcc' =~ /^$re/ ||0; # 0 Recursive call is anchored to pos. print 'aa!bcc' =~ /^$re/ ||0; # 0 Recursive call is anchored to pos. #### $, = ", "; $\ = "\n"; print 'aab' =~ /\Ga/g; # 'a', 'a'. print 'aba' =~ /\Ga/g; # 'a'. Anchored at pos. print 'baa' =~ /\Ga/g; # Nothing. Also anchored to start.