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