eval { local $SIG{ALRM} = sub { next "timeout" }; alarm(20); eval{ $portaddr = recv(SOCKET, $id, 10000, 0) or next "recv: $!"; ($port, $ipaddr) = sockaddr_in($portaddr); my $host = gethostbyaddr($ipaddr, AF_INET); }; alarm(0); }; alarm(0); next if $@ && $@ !~ /timeout/;