I personally believe that perhaps this is a good situation to remind yet another time that 5.10.0 supports a lexical $_: if I only change
in your code toforeach (@fits) { suck_this($_) ; } ;
show_fits() ; { my $_; foreach (@fits) { suck_this($_) ; } ; }
then I get
C:\temp>perl osha.pl Fits: 5, 6, 7 Read: 'Fit I' Read: 'Fit II' Read: 'Fit III' Fits: 5, 6, 7 Read: 'Fit I' Read: 'Fit II' Read: 'Fit III' Fits: 5, 6, 7
Here, I localized the lexical behaviour to a scope closest to the loop. But if I like it, I may set it once and for all the script say at the top of it. Of course, I may also do the same thing for one loop only:
while (my $_ = <$fh>) { ... }
but I don't like to assign explicitly to $_, and in that case I would probably use a named lexical variable.
In reply to Re: Just when you thought you'd got it: 'foreach $f (@foo)' vs 'foreach (@foo)'
by blazar
in thread Just when you thought you'd got it: 'foreach $f (@foo)' vs 'foreach (@foo)'
by gone2015
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |