I tried "m//" as reported on your 'next' expression and got 'd e f g h', as expected. From my perlop on 5.36.
The empty pattern "//"
If the *PATTERN* evaluates to the empty string, the last
*successfully* matched regular expression is used instead. In
this case, only the "g" and "c" flags on the empty pattern are
honored; the other flags are taken from the original pattern. If
no match has previously succeeded, this will (silently) act
instead as a genuine empty pattern (which will always match).
Note that it's possible to confuse Perl into thinking "//" (the
empty regex) is really "//" (the defined-or operator). Perl is
usually pretty good about this, but some pathological cases
might trigger this, such as "$x///" (is that "($x) / (//)" or
"$x // /"?) and "print $fh //" ("print $fh(//" or
"print($fh //"?). In all of these examples, Perl will assume you
meant defined-or. If you meant the empty regex, just use
parentheses or spaces to disambiguate, or even prefix the empty
regex with an "m" (so "//" becomes "m//").
In reply to Re^3: Empty pattern in regex
by perlboy_emeritus
in thread Empty pattern in regex
by choroba
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |