in reply to Loosing variable content after regular expression
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.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Loosing variable content after regular expression
by metty (Initiate) on Dec 19, 2014 at 08:39 UTC | |
by AnomalousMonk (Archbishop) on Dec 19, 2014 at 18:29 UTC |