#!/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