sub getptr { my ($addr, $time, $s, $sel); $addr = shift; $time = 5; dprint "h"; $res = new Net::DNS::Resolver; $s = $res->bgsend($addr); $sel = new IO::Select($s); @ready = $sel->can_read($time); if (@ready) { # we got a successful result dprint "s"; $sel->remove($s); undef $s; $q = $res->search($addr); if ($q) { dprint "L"; foreach $rr ($q->answer) { next unless $rr->type eq "PTR"; return $rr->ptrdname; } } else { dprint "x"; return ''; } } else { # we timed out dprint "S"; $sel->remove($s); undef $s; dprint "x"; return ''; } }