Hello Cristoforo,
Within the look-ahead assertion (?=$), the metacharacter $ means:
Match the end of the string (or before newline at the end of the string; or before any newline if /m is used) (from “Metacharacters” in perlre#The-Basics)
Since it comes after the newline within the regex pattern — and your string contains no consecutive newlines — it can match only at the very end of the string. This explains the behaviour you’re seeing.
If you remove the look-ahead:
for my $line (split/(?m)\n/, $s) {
the output is displayed line-by-line, as expected.
Hope that helps,
| Athanasius <°(((>< contra mundum | Iustus alius egestas vitae, eros Piratica, |
In reply to Re: matching lines in a long string
by Athanasius
in thread matching lines in a long string
by Cristoforo
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |