in reply to Waiting for multiple filehandles

There's also IO::Select which provides an OOPy wrapper around the lower level call. But definitely check out POE.