http://qs321.pair.com?node_id=666805


in reply to Re: why can't I just cat the file???
in thread why can't I just cat the file???

I'd like to expand upon this correct answer. It seems like a really weird distinction if you aren't familiar with Perl's filter-writing magic.
while (<DATA>) { ... }
One might think that the above code is equivalent to this:
@foo = <DATA>; while (@foo) { ... }
In reality, due to Perl's magical way of helping you implement simple STDIN-to-STDOUT text file filters, the first snippet is rephrased internally to mean the following:
while (defined ($_ = readline(*DATA))) { ... }
Thus, while () isn't taking a list, or even what looks like a list. It's taking a condition, the condition being the successful ability to read a single line from a filehandle (and if successful, assigning the line to $_ for checks inside the loop).

--
[ e d @ h a l l e y . c c ]