in reply to Re^3: do {$i++} until vs. $i++ until
in thread do {$i++} until vs. $i++ until

True they are not functionally equivalent but I didn't care to replicate the bug of looping on a closed file descriptor;-) It works properly when used in a command pipeline.

As far as last INPUT if $line eq ".\n" goes it is probably correct to put it at the top of the loop since ".\n" is being used as an equivalent to EOF. Whatever is done with ".\n" most likely requires special handling of some sort, for example a sendmail equivalent wouldn't include it in the message and would treat it the same as EOF.