in reply to modernizing a perl util to upload a file through sftp

If possible, I recommend using an ssh and scp based approach - particularly using scp to create the directory structure on the remote host you want. Secondly, in my experience system("ping $host") is not sufficent and you should not be using alarm when ping has a commandline arguments (-c NUMBER) that says send NUMBER pings then quit. There are also flags for timeout (-t) and wait (-i).Net::Ping is also a good option for this. So ctrl-c is necessary because ping runs for ever without a flag like -c. Further more, if you want to use alarm (maybe as an extreme safety measure), it requires you set a handler for $SIG{ALRM}. Again, check out the examples in alarm.