use Sys::AlarmCall; #open socket #.... &socket_read(); sub alarm_signal { print STDERR "Received alarm\n"; &socket_read(); }; sub socket_read { while(1){ alarm_call(60, 'alarm_signal'); my $len = $socket->sysread($line,1024); #..... } }