Data-Dumper
view release on metacpan or search on metacpan
}
else {
Carp::carp("Only refs supported, ignoring non-ref item \$$k");
}
}
else {
Carp::carp("Value of ref must be defined; ignoring undefined item \$$k");
}
}
return $s;
}
else {
return map { @$_ } values %{$s->{seen}};
}
}
#
# set or query the values to be dumped
#
sub Values {
my($s, $v) = @_;
if (defined($v)) {
if (ref($v) eq 'ARRAY') {
$s->{todump} = [@$v]; # make a copy
return $s;
}
else {
Carp::croak("Argument to Values, if provided, must be array ref");
}
}
else {
return @{$s->{todump}};
}
}
#
# set or query the names of the values to be dumped
#
sub Names {
my($s, $n) = @_;
if (defined($n)) {
if (ref($n) eq 'ARRAY') {
$s->{names} = [@$n]; # make a copy
return $s;
}
else {
Carp::croak("Argument to Names, if provided, must be array ref");
}
}
else {
return @{$s->{names}};
}
}
sub DESTROY {}
sub Dump {
return &Dumpxs
unless $Data::Dumper::Useperl || (ref($_[0]) && $_[0]->{useperl})
# Use pure perl version on earlier releases on EBCDIC platforms
|| (! $IS_ASCII && $] lt 5.021_010);
return &Dumpperl;
}
#
# dump the refs in the current dumper object.
# expects same args as new() if called via package name.
#
our @post;
sub Dumpperl {
my($s) = shift;
my(@out, $val, $name);
my($i) = 0;
local(@post);
$s = $s->new(@_) unless ref $s;
for $val (@{$s->{todump}}) {
@post = ();
$name = $s->{names}[$i++];
$name = $s->_refine_name($name, $val, $i);
my $valstr;
{
local($s->{apad}) = $s->{apad};
$s->{apad} .= ' ' x (length($name) + 3) if $s->{indent} >= 2 and !$s->{terse};
$valstr = $s->_dump($val, $name);
}
$valstr = "$name = " . $valstr . ';' if @post or !$s->{terse};
my $out = $s->_compose_out($valstr, \@post);
push @out, $out;
}
return wantarray ? @out : join('', @out);
}
# wrap string in single quotes (escaping if needed)
sub _quote {
my $val = shift;
$val =~ s/([\\\'])/\\$1/g;
return "'" . $val . "'";
}
# Old Perls (5.14-) have trouble resetting vstring magic when it is no
# longer valid.
use constant _bad_vsmg => defined &_vstring && (_vstring(~v0)||'') eq "v0";
#
# twist, toil and turn;
# and recurse, of course.
# sometimes sordidly;
# and curse if no recourse.
#
sub _dump {
my($s, $val, $name) = @_;
my($out, $type, $id, $sname);
$type = ref $val;
$out = "";
( run in 1.271 second using v1.01-cache-2.11-cpan-364913b4093 )