my $start = time; sub exec_time { return time - $start } alarm 5; $SIG{ALRM} = sub { printf "alarm (%d)!\n", exec_time() }; my $yawn = `sleep 10 ; echo "yawn"`; printf "(%d) yawn? $yawn\n", exec_time(); __END__ alarm (5)! (10) yawn? yawn