summaryrefslogtreecommitdiff
path: root/lib/dumpvar.pl
diff options
context:
space:
mode:
authorIlya Zakharevich <ilya@math.berkeley.edu>1998-07-25 17:28:16 -0400
committerGurusamy Sarathy <gsar@cpan.org>1998-08-01 19:52:19 +0000
commitee239bfe47dc5d504cf50bb8f48401031aa791d7 (patch)
treed639b7f5512d058ca4c8b24cbcd2f0fc5efab604 /lib/dumpvar.pl
parent3654eb6c94c503df3bbf29cfeb2429609f7a0879 (diff)
downloadperl-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.pl13
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" ;