in reply to IO::Socket::INET $Socket->recv won't time out

You should use IO::Select or select.

@ready = IO::Select->new($Socket)->can_read(4); if (@ready) { $Socket->recv($Info{Data},16384); }