diff options
author | Ilya Zakharevich <ilya@math.berkeley.edu> | 1998-07-25 17:28:16 -0400 |
---|---|---|
committer | Gurusamy Sarathy <gsar@cpan.org> | 1998-08-01 19:52:19 +0000 |
commit | ee239bfe47dc5d504cf50bb8f48401031aa791d7 (patch) | |
tree | d639b7f5512d058ca4c8b24cbcd2f0fc5efab604 /lib/dumpvar.pl | |
parent | 3654eb6c94c503df3bbf29cfeb2429609f7a0879 (diff) | |
download | perl-ee239bfe47dc5d504cf50bb8f48401031aa791d7.tar.gz |
fixes for overloading bugs and docs, tweaked some
Message-Id: <199807260128.VAA10543@monk.mps.ohio-state.edu>
Subject: [PATCH 5.004_76] better overloading
p4raw-id: //depot/maint-5.005/perl@1677
Diffstat (limited to 'lib/dumpvar.pl')
-rw-r--r-- | lib/dumpvar.pl | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/dumpvar.pl b/lib/dumpvar.pl index cc7da89a62..32d4692d13 100644 --- a/lib/dumpvar.pl +++ b/lib/dumpvar.pl @@ -23,6 +23,7 @@ $tick = "auto" unless defined $tick; $unctrl = 'quote' unless defined $unctrl; $subdump = 1; $dumpReused = 0 unless defined $dumpReused; +$bareStringify = 1 unless defined $bareStringify; sub main::dumpValue { local %address; @@ -50,6 +51,10 @@ sub stringify { return 'undef' unless defined $_ or not $printUndef; return $_ . "" if ref \$_ eq 'GLOB'; + $_ = &{'overload::StrVal'}($_) + if $bareStringify and ref $_ + and defined %overload:: and defined &{'overload::StrVal'}; + if ($tick eq 'auto') { if (/[\000-\011\013-\037\177]/) { $tick = '"'; @@ -110,7 +115,7 @@ sub unwrap { return if $DB::signal; local($v) = shift ; local($s) = shift ; # extra no of spaces - local(%v,@v,$sp,$value,$key,$type,@sortKeys,$more,$shortmore,$short) ; + local(%v,@v,$sp,$value,$key,@sortKeys,$more,$shortmore,$short) ; local($tHashDepth,$tArrayDepth) ; $sp = " " x $s ; @@ -118,9 +123,11 @@ sub unwrap { # Check for reused addresses if (ref $v) { - ($address) = $v =~ /(0x[0-9a-f]+)\)$/ ; + my $val = $v; + $val = &{'overload::StrVal'}($v) + if defined %overload:: and defined &{'overload::StrVal'}; + ($address) = $val =~ /(0x[0-9a-f]+)\)$/ ; if (!$dumpReused && defined $address) { - ($type) = $v =~ /=(.*?)\([^=]+$/ ; $address{$address}++ ; if ( $address{$address} > 1 ) { print "${sp}-> REUSED_ADDRESS\n" ; |