sub new_inet_from_fd { my ($fd, %arg) = @_; my $timeout = delete $arg{Timeout}; my $blocking = exists $arg{Blocking} ? delete $arg{Blocking} : 1; my $sock = IO::Socket::INET->IO::Handle::new_from_fd($fd, '+<'); ${*$sock}{'io_socket_timeout'} = $timeout; ${*$sock}{io_sock_nonblocking} = !$blocking; $sock->blocking($blocking); $sock->autoflush(1); return $sock; }