Very useful!
I have a suggestion: I would mention in the PODs that the sigalrm is used to establish the timeout. Almost every module that has a timeout uses a sigalrm to accomplish the task, and when they're used in combination, strange things happen. (Usually, the last assignment to $SIG{ALRM} overriders any former assignments.)
This would pose problems to those who use Net::Ping, for example, and less seasoned coders may not be aware of what is happening.
I'm going to keep this in my toolkit. I think it will see good use.