in reply to Re: Re: Re: When does while() test for defined vs truth
in thread When does while() test for defined vs truth

I noticed that the behavior was consistant for filehandle reads, which is why I found the behavior of globbing perplexing...

The following lines are equivalent to each other:

while (<STDIN>) { print; } # tests for definedness print while <STDIN>; # tests for definedness
But these two are not equivalent to each other:
while ($_ = <*>) { print } # tests for definedness print while ($_ = <*>); # tests for truthfulness
Update -- Here is an example in action:
% mkdir newdir % cd newdir % touch 0 1 2 % ls 0 1 2 % perl -le 'while ($_ = <*>) { print }' 0 1 2 % perl -le 'print while ($_ = <*>)' [note nothing is printed here]

-Blake