in reply to Re^2: Just when you thought you'd got it: 'foreach $f (@foo)' vs 'foreach (@foo)'
in thread Just when you thought you'd got it: 'foreach $f (@foo)' vs 'foreach (@foo)'

Yes, the dwimmy magic that adds the definedness test is still present. That's one thing I noticed, much to my relief.

The issue with while (<>) { ... } is that the while clobbers $_. This makes debugging harder especially when it is used in some function/module somewhere else.

Sins of Perl Revisited explains that module authors must be educated to localize $_ before changing it.

If by "most cases", you mean not using while (<>) { ... } in a function/module, then yeah, I suppose it would be enough. But who's to say that some day, the existing code won't be packaged up wholesale and used elsewhere, causing interesting bugs ;-)