If that does not offer exactly what you are looking for, what I have always done (in other languages, never had to do sockets with perl) was create a thread to handle the information.
Attach a buffer and every now and again read the buffer to see what is in it from your main loop.
This assumes you have thread support compiled into your version of perl (My Admin at work is doing this very thing right now to solve a similar problem)