Anonymous Monk is right, this most likely has something to do with what $l_Name_ref refers to. Most likely, this is a capture variable that then gets reset by the next match operation:
#!perl -w sub foo { my( $ref )= @_; print "Before match: <$$ref>\n"; 'barring something else' =~ /bar/; # reset all capture variables print "After match: <$$ref>\n"; }; 'blargh foo blargh' =~ /(foo)/; foo( \$1 ); print "Attempt 2:\n"; 'blargh foo blargh' =~ /(foo)/; foo( \"$1" ); __END__ Before match: <foo> Use of uninitialized value in concatenation (.) or string at q:\tmp.pl + line 7. After match: <> Before match: <foo> After match: <foo>
I doubt that the intent is really to pass around a reference to $1, as that has the described side effects. It's likely better to pass a reference to a copy of $1, as in Attempt 2.
In reply to Re: Loosing variable content after regular expression
by Corion
in thread Loosing variable content after regular expression
by metty
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |