http://www.perlmonks.org?node_id=644764


in reply to Re: Bug or feature? s/// and the g option
in thread Bug or feature? s/// and the g option

Interesting. So a failed match will clear the $1 variable. I'm still a little stumped by Marco's original example:
$test = <<'END'; XXWY XXWZ END $count = $test =~ s#(XXW?Y)##gi; print "REMOVED: <<$1>>\nCOUNT: $count\n";
That fails. But remove the "i" in the substitution and $1 is defined. Why would case-insensitive make any difference?
--rjk

Replies are listed 'Best First'.
Re^3: Bug or feature? s/// and the g option
by ysth (Canon) on Oct 14, 2007 at 19:46 UTC
    AIUI, without the i, before the regex engine proper is entered, there's an optimization that makes it search for an XX followed later by a Y. That optimization rejects a match, and when that happens, it bypasses the bug that's setting $1 to undef. Seems to be fixed for 5.10.0.
      Ah, thanks for the explanation ysth!
      --rjk