From: Jarkko Hietaniemi Date: Sun, 7 Sep 2003 07:04:53 +0000 (+0000) Subject: Retract #21010. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=a85f0137af09e176703c3be028b101450672ebb0;p=p5sagit%2Fp5-mst-13.2.git Retract #21010. p4raw-id: //depot/perl@21061 --- diff --git a/lib/dumpvar.pl b/lib/dumpvar.pl index f4a4399..12c9e91 100644 --- a/lib/dumpvar.pl +++ b/lib/dumpvar.pl @@ -136,19 +136,7 @@ sub unwrap { my $val = $v; $val = &{'overload::StrVal'}($v) if %overload:: and defined &{'overload::StrVal'}; - # Match type and address. - # Unblessed references will look like TYPE(0x...) - # Blessed references will look like Class=TYPE(0x...) - ($start_part, $val) = split /=/,$val; - $val = $start_part unless defined $val; - ($item_type, $address) = - $val =~ /([^\(]+) # Keep stuff that's - # not an open paren - \( # Skip open paren - (0x[0-9a-f]+) # Save the address - \) # Skip close paren - $/x; # Should be at end now - + ($address) = $val =~ /(0x[0-9a-f]+)\)$/ ; if (!$dumpReused && defined $address) { $address{$address}++ ; if ( $address{$address} > 1 ) { @@ -157,7 +145,6 @@ sub unwrap { } } } elsif (ref \$v eq 'GLOB') { - # This is a raw glob. Special handling for that. $address = "$v" . ""; # To avoid a bug with globs $address{$address}++ ; if ( $address{$address} > 1 ) { @@ -167,15 +154,13 @@ sub unwrap { } if (ref $v eq 'Regexp') { - # Reformat the regexp to look the standard way. my $re = "$v"; $re =~ s,/,\\/,g; print "$sp-> qr/$re/\n"; return; } - if ( $item_type eq 'HASH' ) { - # Hash ref or hash-based object. + if ( UNIVERSAL::isa($v, 'HASH') ) { @sortKeys = sort keys(%$v) ; undef $more ; $tHashDepth = $#sortKeys ; @@ -208,19 +193,14 @@ sub unwrap { } print "$sp empty hash\n" unless @sortKeys; print "$sp$more" if defined $more ; - } elsif ( $item_type eq 'ARRAY' ) { - # Array ref or array-based object. Also: undef. - # See how big the array is. + } elsif ( UNIVERSAL::isa($v, 'ARRAY') ) { $tArrayDepth = $#{$v} ; undef $more ; - # Bigger than the max? $tArrayDepth = $#{$v} < $arrayDepth-1 ? $#{$v} : $arrayDepth-1 if defined $arrayDepth && $arrayDepth ne ''; - # Yep. Don't show it all. $more = "....\n" if $tArrayDepth < $#{$v} ; $shortmore = ""; $shortmore = " ..." if $tArrayDepth < $#{$v} ; - if ($compactDump && !grep(ref $_, @{$v})) { if ($#$v >= 0) { $short = $sp . "0..$#{$v} " . @@ -240,35 +220,20 @@ sub unwrap { return if $DB::signal; print "$sp$num "; if (exists $v->[$num]) { - if (defined $v->[$num]) { - DumpElem $v->[$num], $s, $m-1; - } - else { - print "undef\n"; - } + DumpElem $v->[$num], $s, $m-1; } else { print "empty slot\n"; } } print "$sp empty array\n" unless @$v; print "$sp$more" if defined $more ; - } elsif ( $item_type eq 'SCALAR' ) { - unless (defined $$v) { - print "$sp-> undef\n"; - return; - } + } elsif ( UNIVERSAL::isa($v, 'SCALAR') or ref $v eq 'REF' ) { print "$sp-> "; DumpElem $$v, $s, $m-1; - } elsif ( $item_type eq 'REF' ) { - print "$sp-> $$v\n"; - return unless defined $$v; - unwrap($$v, $s+3, $m-1); - } elsif ( $item_type eq 'CODE' ) { - # Code object or reference. + } elsif ( UNIVERSAL::isa($v, 'CODE') ) { print "$sp-> "; dumpsub (0, $v); - } elsif ( $item_type eq 'GLOB' ) { - # Glob object or reference. + } elsif ( UNIVERSAL::isa($v, 'GLOB') ) { print "$sp-> ",&stringify($$v,1),"\n"; if ($globPrint) { $s += 3; @@ -277,7 +242,6 @@ sub unwrap { print( (' ' x ($s+3)) . "FileHandle({$$v}) => fileno($fileno)\n" ); } } elsif (ref \$v eq 'GLOB') { - # Raw glob (again?) if ($globPrint) { dumpglob($s, "{$v}", $v, 1, $m-1) if $globPrint; } elsif (defined ($fileno = fileno(\$v))) {