Not all processes in the network stack are interruptible. Perl can't process an ALRM signal until control is returned to the perl interpreter. One partial remediation is to break up the task into small chunks. ie. Perform DNS queries first and pinging the server before issuing GETs.
The only sure 'workaround' is to fork a child to handle the network communication. This allows the parent to time-out and leave the children to the reaper.
s//----->\t/;$~="JAPH";s//\r<$~~/;{s|~$~-|-~$~|||s
|-$~~|$~~-|||s,<$~~,<~$~,,s,~$~>,$~~>,,
$|=1,select$,,$,,$,,1e-1;print;redo}