The default scalar $_ (see perlvar) is assigned to in some cases, but not all; you've chosen one of the "not all" cases. A while-loop like
while (<FILEHANDLE>) {
print;
}
is really
while (defined($_ = <FILEHANDLE>)) {
print $_;
}
and likewise
for (<FILEHANDLE>) {
print;
}
is
for $_ (<FILEHANDLE>) {
print $_;
}
(Note that the
while-loop will read and print the filehandle line-by-line, but the
for-loop will read
all lines of the file at once (could be a lotta lines!) and then print the lines one-by-one.) See
perlsyn.
Give a man a fish: <%-{-{-{-<