nah, it seems i was once again suffering from severe foot-in-mouth syndrome, and zaxo was indeed right on the money suggesting IO::Select. What the problem basically comes down to is using <> on a filehandle that has no data waiting, resulting in the script freezing until some data comes along. IO::Select's ability to tell you in advance if there is data allows me to avoid that issue, hence fixing my problem.