#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use Data::Dump;
my $small = {a => 1, b => 2, c => 3, d => 4, e => 5};
my $large = {
aaa => 'data set 1',
bbb => 'data set 2',
ccc => 'data set 3',
ddd => 'data set 4',
xxx => $small,
};
print "Data::Dumper:\n";
print Dumper($small);
print Dumper($large);
print "\nData::Dump:\n";
dd($small);
dd($large);
The following output shows the default settings of each module:
Data::Dumper:
$VAR1 = {
'e' => 5,
'c' => 3,
'a' => 1,
'b' => 2,
'd' => 4
};
$VAR1 = {
'bbb' => 'data set 2',
'xxx' => {
'e' => 5,
'c' => 3,
'a' => 1,
'b' => 2,
'd' => 4
},
'aaa' => 'data set 1',
'ccc' => 'data set 3',
'ddd' => 'data set 4'
};
Data::Dump:
{ a => 1, b => 2, c => 3, d => 4, e => 5 }
{
aaa => "data set 1",
bbb => "data set 2",
ccc => "data set 3",
ddd => "data set 4",
xxx => { a => 1, b => 2, c => 3, d => 4, e => 5 },
}
As I said, Data::Dump is compacter. :)
If a structure fits into one line, it will do so.
Another neat module is Data::Dumper::Concise. It is an "optimal" configuration of Data::Dumper. But I don't care, I use Data::Dump for that. But I like its Devel::Dwarn module. It exports Dwarn, which allows you this:
sub ... {
my $ua = ...
...
return Dwarn $ua->get(...);
}
Normally you would have to rewrite your code and assign the result of the method call to a temporary variable and dump it. With Dwarn the changes are minimal. Also exported: DwarnS for scalar context and DwarnL for list context.Have a look at Data::Dump::Streamer for another alternative to Data::Dumper.
Links:
Thanks. I always forget about Dwarn...
ReplyDeleteDon't forget Data::Show
ReplyDeleteAnd if you use the dumper mostly for debugging - then a nice alternative is also Smart::Comments :)
ReplyDelete