# setup an ALRM handler my $timed_out = 0; local $SIG{ALRM} = sub { die "Timed out!" }; # run some code for 10 seconds max eval { alarm 10; # let it run 10 seconds eval($code); die $@ if $@; }; # figure out if it got an alarm warn "Alarm rang!" if $@ and $@ =~ /Timed out!/;