It's not a bug (nor an
anomaly). It's intended, useful, behaviour. I use
each all the time, and I've never been bitten by it. It's no different from
<STDIN,
m//g, or
readdir. That's what iterators are supposed to do. And I think it's bad advice to say it's something to be avoided or worked around.