OK, I guess your remark confuses me a bit:
What do you mean with for/foreach clobbering up $_?
Is $_ not always implicitly localized in these looping constructs as a lexical (while while is not really a looping construct) - what is the problem with using $_?