princepawn has asked for the wisdom of the Perl Monks concerning the following question:

I used Data::Dumper on the "filehandle" returned to me by use of libnet's Net::FTP to issue a RETR FTP command, which returns a filehandle to a remote file.

if you dump what Net::FTP returns here it is:

{ $fh = $self->_do_ftp_cmd("retr", $file); die("File unavailable: $file") unless $fh; } use Data::Dumper; warn sprintf "FILEHANDLE EXISTS AND HERE IT IS: %s", Dumper($fh); #### OUTPUT Warning: FILEHANDLE EXISTS AND HERE IT IS $VAR1 = bless( \*Symbol::GEN16, 'Net: +:FTP::I' );

And in looking at Net::FTP::I it is fairly apparent that he is making use of the hash reference of this generated symbol:

package Net::FTP::I; use vars qw(@ISA $buf $VERSION); use Carp; require Net::FTP::dataconn; @ISA = qw(Net::FTP::dataconn); $VERSION = "1.08"; # $Id: //depot/libnet/Net/FTP/I.pm#6$ sub read { my $data = shift; local *buf = \$_[0]; shift; my $size = shift || croak 'read($buf,$size,[$timeout])'; my $timeout = @_ ? shift : $data->timeout; $data->can_read($timeout) or croak "Timeout"; my($b,$n,$l); ## *** the line below implies use of the hash part of ## *** the type glob my $blksize = ${*$data}{'net_ftp_blksize'}; # $blksize = $size if $size > $blksize;

But my question is: how could I redo my original call to Dumper() so that it dumped every aspect of the typeglob that $fh referred to?

Replies are listed 'Best First'.
Re: Recursive Data::Dumper use needed
by hdp (Beadle) on Apr 25, 2001 at 19:30 UTC
    Maybe:
    $d = Data::Dumper->new([$fh]); $d->Purity(1); print $d->Dump;
    That will print (at least) the scalar, array, and hash associated with whatever glob $fh references. This may be useful.

    hdp.