sub timeout { $SIG{'ALRM'} = \&timeout;print "Socket Timeout\n"; } $SIG{'ALRM'} = \&timeout; eval { alarm($nPOKESERVERTIMEOUT + 1); while (my $line = <$sock>) { $data .= $line; } alarm 0; }