in reply to The curious case of LWP - the SIG{ALRM} robber

I just searched through the latest LWP and IO::Socket, and I couldn't find any mentioned of alarm. They use select now. You could upgrade those, or get rid of timeout => $maxNetworkDelay.

It looks like a process can have only one SIG{ALRM}

Signals are sent to processes, so you can't have two alarms going.

An alarm set is caught by the whatever alarm handling mechanism that is in scope - in our case, the alarm handling mechanism in LWP.

The alarm handler is global, so "in scope" makes no sense. An alarm signal is handled by the specified alarm handler, if any. (The process is killed otherwise.) In your case, LWP sets the alarm handler last.

Once caught. $@ is read, handled, and reset.

I don't know what you mean by that.