#!/usr/bin/perl use strict; use warnings; local $| = 1; # Our alarm handler: simply quits the # process, or eval block. $SIG{ALRM} = sub { die "our alarm went off\n" }; # Put it all in an eval block, so we # can regain control after if finishes # or dies. eval { #alarm(10); # set for ten seconds [example] alarm(1); # set for one second [example] print "Running subprocess, etc..."; sleep(5); # the sleep() merely simulates a running process print "done\n"; }; # Let's see if an error, from die, was # returned; and if it was, whether it # was because our alarm went off. if($@) { print "Timed out\n" if $@ =~ /our alarm went off/; # Do whatever else we wish. }