use re 'eval'; my $string = "he\nllo world ba\nllloon"; my $regex = qr/\nll/; my @matches; () = $string =~ /(?=$regex)(?{push @matches, pos})./sg; print "with .\n", join "\n", @matches; @matches = (); () = $string =~ /(?=$regex)(?{push @matches, pos})/sg; print "\n\nwithout .\n", join "\n", @matches; __END__ with . 2 15 without . 2 2 15 15