$timeout=5; eval { local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required alarm $timeout; $nread = system('F:\perl1.pl'); alarm 0; }; if ($@) { die unless $@ eq "alarm\n"; # propagate unexpected errors print "process terminated\n";} else { # didn't }