in reply to Re^2: Empty pattern in regex
in thread Empty pattern in regex
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//").
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Empty pattern in regex
by choroba (Cardinal) on Oct 19, 2023 at 13:23 UTC | |
by perlboy_emeritus (Scribe) on Oct 19, 2023 at 14:37 UTC | |
by choroba (Cardinal) on Oct 19, 2023 at 14:55 UTC |