in reply to Re^3: Modification of a read-only value
in thread Modification of a read-only value

Perl's one step ahead of you:

$ perl -MO=Deparse -e'while($foo=<>){}' while (defined($foo = <ARGV>)) { (); } -e syntax OK

This is a relatively recent change from two or so years ago, though; I don't rememeber which version introduced it off-hand.

Even without the definedness test it wouldn't stop on a blank line either, btw. Don't forget the record separator. A blank line is not an empty string; it's "\n". What that construct would fail to process is the very last line of a file, if it contains only a 0 and is not terminated by a record separator. (It can't be blank, obviously, because a blank line with no record separator is, well, err, no line at all. :-))

Makeshifts last the longest.