open(WORKER,"yes >/dev/null |"); eval{ local $SIG{ALRM} = sub { die "alarm\n" }; alarm 1; $str = ; alarm 0; }; if ($@) { print "timeout\n"; close WORKER; return 0; }