in reply to IO::Socket crapping out

It's hard to diagnose this without example code. If it's the socket that's hanging, you might look into setting 'reuse' in the constructor.

If the socket is blocking for input, you might look into the four-argument form of select, or even IO::Select, which will let you determine your own wait limits.

Without error messages and code, a guess is the best I can do. (With messages and example code, it's still probably the best I can do. :)