LPM: Scope of $_

AARON B. DOSSETT aaron at iglou.com
Tue Jan 11 21:05:07 CST 2000


> 
> So you tell me...am I confused or disappointed?  I looked in Learning Perl
> and Programming Perl, but didn't find the answer.  Is there something I can
> do to protect $_ ?  I tried my ($_) but perl didn't like that.
> 

You're disappointed, and rightly so.  There's only one $_ and a change made
to it anywhere is reflected everywhere else.  The solution is to rely on
$_ only in limited circumstances, i.e.: 

while (<IN>)
{
  next unless /foo/;
  ...
}

or to protect $_ when calling unknown subroutines, i.e.:

{local $_ = undef;
 unknown_sub();
}

This will restore the value of $_ once you exit the code-block.

See item 3 of :   http://www.perl.com/pub/1999/11/sins.html  for more details.

Hope that helps,

Aaron



More information about the Lexington-pm mailing list