use strict; use warnings; use 5.010; eval { local $SIG{ALRM} = sub {die "my timeout"}; #execute this sub when ALRM signal received alarm 3; #sends ALRM signal to this process in 3 secs, which causes sub #to execute $| = 1; #turn off buffering to STDOUT, otherwise all output will come at #program termination when STDOUT's buffer is automatically #flushed while (1) { say 'hi'; sleep 1; } }; #<-- don't forget that semi-colon --output:-- hi hi hi
"Throwing" the error with die() will cause execution to jump out of the eval() block. After the eval() block terminates, the die() message is available in $@. If the eval block terminates without error, $@ will be the null string(whatever that is).
In reply to Re: Timing out
by 7stud
in thread Timing out
by pavanmach
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |