in reply to blocking socket and alarm

A more robust (and portable) approach is to perform a 'select' call on the socket handle with a 60 second timeout. That way you don't have to worry about any signal nastiness.

Either use IO::Select or the second form from perldoc -f select

Replies are listed 'Best First'.
Re^2: blocking socket and alarm
by ikegami (Patriarch) on Sep 05, 2006 at 17:07 UTC

    It's also much simpler. Why didn't I think of that?

    use IO::Select (); sub socket_read { my $sel = IO::Select->new($socket); while (!$sel->can_read(60)) { print STDERR "Received alarm\n"; } my $len = $socket->sysread($line, 1024); ... }

    Reference: IO::Select