That works.
I thought (incorrectly obviously) that $_ automatically was assigned the last line read. I recall seeing examples like that, but maybe it was only for reading from files. | [reply] [Watch: Dir/Any] |
| [reply] [Watch: Dir/Any] [d/l] [select] |
... but not documented under while, but in perlop under "I/O-Operators" (where the internal link anchor seems not to work)
| [reply] [Watch: Dir/Any] |
Perhaps a better thought model is that $_ gets assigned the last thing read. At the end of the file, that last thing is the EOF, which is returned as undef.
The fundamental problem here was poor loop design. The use of for(;;){} or while (1){} should be restricted to very special circumstances like an infinite loop in server code to wait for next connection, etc. If the loop is coded differently and I would argue properly, as corion suggests, while (<>){}, this handling undef inside the loop problem goes away.
| [reply] [Watch: Dir/Any] |