eval { local $SIG{ALRM} = sub { die "alarm\n" }; # NB \n required alarm 2; #my $return = `$text 2>&1`; my $return = system($text); # $nread = sysread SOCKET, $buffer, $size; alarm 0; }; die if $@ && $@ ne "alarm\n"; # propagate errors if ($@) { # timed out print "\ntimeout, return: " . $return; } else { # didn't }