in reply to When is $_ local and when is it not?
- Just because.... ;-)
There is a difference between foreach and while because they are two totally different things. foreach always assigns to a variable when looping over a list, while while normally doesn't. It's just that while (<>) is an exception and only when there's a single diamond operator there's an implicite assignment to $_.