diff --git a/lib/Net/Telnet.pm b/lib/Net/Telnet.pm index f0f20fb..ff79361 100644 --- a/lib/Net/Telnet.pm +++ b/lib/Net/Telnet.pm @@ -2913,21 +2913,27 @@ sub _io_socket_include { eval "require IO::Socket"; } # end sub io_socket_include - sub _is_open_fh { my ($fh) = @_; my $is_open = ''; local $@; eval { - local $SIG{"__DIE__"} = "DEFAULT"; - $is_open = defined(fileno $fh); + local $SIG{"__DIE__"} = "DEFAULT"; + $is_open = defined(fileno $fh); }; + if (!$is_open and $@) { # fileno() failed + ## Check if filehandle is tied and printable. + eval { + local $SIG{"__DIE__"} = "DEFAULT"; + $is_open = tied(*$fh) && $fh->can("print"); + }; + } + $is_open; } # end sub _is_open_fh - sub _log_dump { my ($direction, $fh, $data, $offset, $len) = @_; my (