7 use Scalar::Util qw( openhandle ) ;
10 our @EXPORT_OK = qw ( dump_data dump_socket dump_owner ) ;
16 local $Data::Dumper::Sortkeys = \&dump_filter ;
29 while( my( $key, $val ) = each %{$href} ) {
31 if( my $fh_val = dump_socket( $val ) ) {
33 my $fh_key = "$key.FH" ;
34 $fh_dumps{$fh_key} = $fh_val ;
42 @{$href}{ keys %{fh_dumps} } = values %{fh_dumps} ;
44 #print "KEYS [@keys]\n" ;
46 return [ sort @keys ] ;
53 return 'UNDEF' unless defined $sock ;
54 return 'EMPTY' unless $sock ;
55 return 'NOT REF' unless ref $sock ;
57 return 'NOT GLOB' unless $sock =~ /GLOB/ ;
59 warn "SOCK [$sock]\n" ;
61 my $fdnum = fileno( $sock ) ;
63 return 'NO FD' unless defined $fdnum ;
65 my $opened = openhandle( $sock ) ? 'OPEN' : 'CLOSED' ;
67 # return "CLOSED $sock" if $opened eq 'CLOSED' ;
69 # $fdnum = 'NONE' unless defined $fdnum ;
73 # return "FD [$fdnum]" unless $sock->isa('IO::Socket') ;
75 return "FD [$fdnum] *$opened* $sock" ;
84 my $owner_dump = "$owner" ;
86 while( $owner->{object} ) {
88 $owner = $owner->{object} ;
89 $owner_dump .= " -> $owner " ;