{ my $timed_out = 0; local $SIG{ ALRM } = sub { $timed_out++; die 'timeout' }; alarm( MAX_SECONDS ); eval { molasses_in_january(); alarm( 0 ); }; if ( $@ ) { die $@ if ! $timed_out; handle_timeout(); } }