Ask, and ye shall recieve:
This is just a sub, pretty basic actually and probably broken in a couple ways. takes a ref as argument, and starts-a-printin. Haven't done any performance testing vs. Data::Dumper.
Begin code
sub dumpref {
my $testref = shift;
my $levels = shift;
if (ref($testref) eq 'HASH') {
print "{\n";
$levels++;
my $maxlevel = scalar(keys %$testref);
my $curlevel = 0;
foreach my $key (keys %$testref) {
$curlevel++;
print " " x $levels;
print $key;
print " => ";
my $val = $testref->{$key};
if (ref($val)) {
&dumpref($val,$levels);
} else {
$val =~ s#\\#\\\\#;
$val =~ s#'#\\'#;
print "'$val'";
}
print "," if $curlevel < $maxlevel;
print "\n";
}
print " " x ($levels - 1) . "}";
} elsif (ref($testref) eq 'ARRAY') {
print "[\n";
$levels++;
my $maxlevel = scalar(@$testref);
foreach my $val (@$testref) {
$curlevel++;
print " " x $levels;
if (ref($val)) {
&dumpref($val,$levels);
print " " x ($levels - 1);
} else {
$val =~ s#\\#\\\\#;
$val =~ s#'#\\'#;
print "'$val'";
}
print "," if $curlevel < $maxlevel;
print "\n";
}
print " " x ($levels - 1) . "]";
} else {
print ref($testref);
print "\n";
}
}
End Code Use at your own risk, but it handles basic stuff ok, I think. =b
Trinary |