modred has asked for the wisdom of the Perl Monks concerning the following question:

The following psuedo-code illustrates something I have just recently run into when relying on $_.

while(<FILE>) { if(/matches/) # use of $_, everything is ok { $object->doSomething($part_of_line); } print "$_\n"; # here $_ has a value of undef and causes problems }

and from the object module

sub doSomething { ... open(FILE2, $file2); while(<FILE2>) { # do more stuff } # At this point in the code, $_ is undef and since $_ is # global... }

This is fixed by adding a local($_); to the doSomething subroutine, is it (adding a local($_);) something that I should be doing on a regular basis in the subroutines of my modules or did I just happen upon an out of the ordinary situation?