The construct
while(<>) is special as it iterates on the magical
ARGV filehandle and sets
$ARGV to the current filename, checking for
definedness all the while. Whereas
for(<>) just slurps
ARGV and iterates over that (which is similar to the
while construct, but not quite the same). Also you probably mean to use
$_ instead of
$ARGV (unless of course you've cheekily abused the global nature of
*ARGV and used the scalar slot)
1. The
while behaviour is well documented in
Programming Perl (ver 3, page 82) and in the
I/O Operators section of
perlop.
HTH
_________
broquaint
1 addendum - as Skeeve points out $ARGV holds the name of the current filename that is being iterated over, so is not in fact abuse of the scalar slot of *ARGV :)
update: added clarifications and fixed mistakes