#!/usr/bin/perl use Carp; eval { local $SIG{ALRM} = sub { croak "timed out" }; alarm 3; # ... # have it hang in line 12 my $s = ; # ... alarm 0; }; print "$@\n" if $@;