in reply to Telnet handshaking
I discovered that some servers won't start up at all unless you perform the negotiation (Linux telnetd is one) whereas others are quite happy for you to charge in there ignoring the negotiation.
You could write the code for this, but as you've noted it is a bit of a pain. However you've got several other options.
- Investigate Net::Telnet to negotiate for you
- Investigate IO::Socket to make your connections and in particular the timeout parameter so you know when the connections have failed
- Learn how to make nonblocking sockets The Perl Cookbook will help here.
- Set an alarm - you could use my time limit module for instance.