eval() is needed only when you want a deep copy.
use Data::Dump qw( pp dd );
my $ref = [ 'foo', 'bar', { asd => 1, qwe => 2 } ];
# pp() called in void context prints to STDERR
pp $ref;
# prints: ["foo", "bar", { asd => 1, qwe => 2 }]
# dd() called in void context prints to STDOUT
dd $ref;
# named printing is still not DRY, but much better than:
# print Data::Dumper->Dump( [$ref], ['*ref'] );
print '$ref = ', pp($ref), "\n";
# prints: $ref = ["foo", "bar", { asd => 1, qwe => 2 }]
# eval() for a deep copy
my $deep_copy = eval pp($ref);
pp $deep_copy;
The printing format is a lot more readable than Data::Dumper's default. However beware that Data::Dump is not among the core modules. |