However, do you think this is the way it should work? After all you don't expect your variables to suddenly change as you go through a function. I know $_ is a global, but I imagine a lot of people write code like the stuff I was maintaining where there is a call to a sub in the middle of using $_. And then maybe that calls a sub and that calls another one, etc. Then someone comes along one day and puts while(<INPUT>) in one of those subs, all careful with use strict and warnings, but suddenly some bit of code miles away just breaks!
Anyway, I know I'm getting a bit hot under the collar over this, perhaps because I spent about an hour not knowing why my change had broken the whole program. But shouldn't there be some kind of health warning at least over the use of while(<>) since it must be one of the first idioms beginners learn.
I know I'm going to write
from now on!local $_; while(<>){ }
update No I'm not I'm going to follow jeffa's example! Doh! I might go through and put local in the old "code"/plate of spaghetti that I'm supposed to be maintaining.
-- iakobski
In reply to Re: Re: When is $_ local and when is it not?
by iakobski
in thread When is $_ local and when is it not?
by iakobski
For: | Use: | ||
& | & | ||
< | < | ||
> | > | ||
[ | [ | ||
] | ] |