my $number = 0; $SIG{ALRM} = sub {die 'timeout'}; while ( $number < 10 ) { eval { $number++; alarm(3); if ( $number == 3 ) { sleep 4; } # This is to simulate the delay the routines may generate... print $number; print "\n"; }; alarm(0); } if($@ eq 'timeout') { next; } else { die $@; }