alarm 5; $SIG{ALRM} = sub { print "alarm!\n" }; my $yawn = `sleep 10 ; echo "yawn"`; print "yawn? $yawn\n"; __END__ alarm! yawn? yawn #### my $yawn; eval { local $SIG{ALRM} = sub { die "alarm\n" }; alarm 5; $yawn = `sleep 10 ; echo "yawn"`; alarm 0; }; print $@ ? 'Timed out.' : 'Finished.'; print "\n"; print "yawn? $yawn\n"; __END__ Timed out. yawn?