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