You are right about the not finding the
\n since I didn't add an
s at the end of the
m//. But if you don't have the . in there it will find the positions twice.
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