Oops, I forgot it. I always localize or lexicalize variables
proper to a subroutine
That's why I never noticed that $_ is not implicetely localized at the entry of a subroutine contrary to what I thought.
Sadly, localizing *_ or $_ doesn't play
well with reference shuffling of strings with positions.
sub lexer { (*_) = @_; print $1 if m/\G(A)/gc || m/\G(B)/gc ; }
my $a = "AB"; lexer \$a; ; lexer \$a;
This prints "A" then "B";
If I add a local *_ or a local $_,
at the entry of the lexer routine, that does not work anymore.
So much for a cool trick.
| [reply] [d/l] |