sub socket_read { my $len; { ($len, my $errmsg) = alarm_call(60, '->sysread', $socket, $line, 1024); if (defined($len)) { if ($len eq 'TIMEOUT') { print STDERR "Received alarm\n"; redo; } if ($len eq 'ERROR') { die($errmsg); } } } ... }