in reply to is there an eval/die for sockets?

One way to do it is to use non-blocking sockets and check up on them until they connect or you grow too impatient. You could do this with an IO::Socket modification Non-blocking TCP connections or your own equivalent solution.