X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDumpvalue.pm;h=7944e78c963fde9b0cf27bc4a52d9989d43407a2;hb=8af3c3489f0c9ca8d37ebae27991ac4f34dfdb2f;hp=617494aa15d975731875bebf999b4e3e86540ea3;hpb=d918263624f69db4f9575643879bfa5b4453117e;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/Dumpvalue.pm b/lib/Dumpvalue.pm index 617494a..7944e78 100644 --- a/lib/Dumpvalue.pm +++ b/lib/Dumpvalue.pm @@ -1,8 +1,10 @@ -use 5.005_64; # for (defined ref) and $#$v and our +use 5.006_001; # for (defined ref) and $#$v and our package Dumpvalue; use strict; +our $VERSION = '1.11'; our(%address, $stab, @stab, %stab, %subs); +# documentation nits, handle complex data structures better by chromatic # translate control chars to ^X - Randal Schwartz # Modifications to print types by Peter Gordon v1.0 @@ -228,7 +230,7 @@ sub unwrap { if ($#$v >= 0) { $short = $sp . "0..$#{$v} " . join(" ", - map {exists $v->[$_] ? $self->stringify $v->[$_] : "empty"} ($[..$tArrayDepth) + map {exists $v->[$_] ? $self->stringify($v->[$_]) : "empty"} ($[..$tArrayDepth) ) . "$shortmore"; } else { $short = $sp . "empty array"; @@ -427,7 +429,14 @@ EOP sub scalarUsage { my $self = shift; - my $size = length($_[0]); + my $size; + if (UNIVERSAL::isa($_[0], 'ARRAY')) { + $size = $self->arrayUsage($_[0]); + } elsif (UNIVERSAL::isa($_[0], 'HASH')) { + $size = $self->hashUsage($_[0]); + } elsif (!ref($_[0])) { + $size = length($_[0]); + } $self->{TotalStrings} += $size; $self->{Strings}++; $size; @@ -483,6 +492,7 @@ Dumpvalue - provides screen dump of Perl data. $dumper->set(globPrint => 1); $dumper->dumpValue(\*::); $dumper->dumpvars('main'); + my $dump = $dumper->stringify($some_value); =head1 DESCRIPTION @@ -494,7 +504,7 @@ A new dumper is created by a call Recognized options: -=over +=over 4 =item C, C @@ -510,28 +520,28 @@ may be printed on one line. Whether to print contents of globs. -=item C +=item C Dump arrays holding contents of debugged files. -=item C +=item C Dump symbol tables of packages. -=item C +=item C Dump contents of "reused" addresses. -=item C, C, C +=item C, C, C Change style of string dump. Default value of C is C, one can enable either double-quotish dump, or single-quotish by setting it to C<"> or C<'>. By default, characters with high bit set are printed -I. +I. If C is set, they will be quoted. -=item C +=item C -I rudimentally per-package memory usage dump. If set, +rudimentally per-package memory usage dump. If set, C calculates total size of strings in variables in the package. =item unctrl @@ -562,17 +572,29 @@ method and set() method (which accept multiple arguments). =head2 Methods -=over +=over 4 =item dumpValue $dumper->dumpValue($value); $dumper->dumpValue([$value1, $value2]); +Prints a dump to the currently selected filehandle. + =item dumpValues $dumper->dumpValues($value1, $value2); +Same as C< $dumper->dumpValue([$value1, $value2]); >. + +=item stringify + + my $dump = $dumper->stringify($value [,$noticks] ); + +Returns the dump of a single scalar without printing. If the second +argument is true, the return value does not contain enclosing ticks. +Does not handle data structures. + =item dumpvars $dumper->dumpvars('my_package');