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


in reply to How to trace a dying process

The while loop is a gotcha in Perl sometimes. Consider the loop
while (<>) { ... }
It will work most of the time, terminating when '<>' fails with undef (reaches the end of file). However when the while loop encounters a '0' by itself, it would fail as well (while loop fails on undef or '0').

The while loop can be fix with the following:
while (defined <>) { ... }
This while loop will only quit when the input stream really ends.

Now that comes to the second part of the problem, EOF's (^Z or ^D) encountered in the input stream unexpectedly. Perhaps you could switch from the while(){} loop to a do {} while () loop, and print out the input to a log file. Then you have a better chance of catching the error.