my $buffer = '' ; my $rc ; while (1) { if ($select->can_read(1)) { $rc = sysread($sock, $buffer, 64*1024, length($buffer)); next if $rc ; # If any chance of a soft error... eg: # if (!defined($rc)) { # next if $! == EAGAIN ; # Not really expected, even with non-blocking # next if $! == EINTR ; # Signals ! # } ; } else { # If signals floating around, can reach here if a signal goes off... $rc = -1 ; last ; } ; } ; # Now: $rc == 0 => no error, == -1 => timed out, == undef => error