Data::DumperかData::Dumpか?
Data::Dumpというモジュールがあり、Data::Dumperとどう違うのだろうと思ったところ、どうもData::Dumperの使いにくい部分があったため、Data::Dumpを作ったようです。使いどころとしては、
- 簡素な出力をしたいとき
- DeepCopyをしたいとき
のようです。
#ロードの確認 $ perl -MData::Dump -e 'print 1;' 1 #数値出力 $ perl -MData::Dump -e 'print Data::Dump::dump(1);' 1 #配列のレファレンス $ perl -MData::Dump -e 'print Data::Dump::dump(+[1,2,3]);' [1, 2, 3] #配列 $ perl -MData::Dump -e 'print Data::Dump::dump((1,2,3));' (1, 2, 3) #配列 $ perl -MData::Dump -e '@foo=('a','b',2);print Data::Dump::dump(@foo);' ("a", "b", 2) #レファレンスした配列 $ perl -MData::Dump -e '@foo=('a','b',2);print Data::Dump::dump(\@foo);' ["a", "b", 2] #配列の要素数 $ perl -MData::Dump -e '@foo=('a','b',2);print Data::Dump::dump(scalar(@foo));' 3 #ハッシュ $ perl -MData::Dump -e '%foo=('a','b',2,4);print Data::Dump::dump(%foo);' ("a", "b", 2, 4) #レファレンスしたハッシュ $ perl -MData::Dump -e '%foo=('a','b',2,4);print Data::Dump::dump(\%foo);' { 2 => 4, a => "b" } #ハッシュ $ perl -MData::Dump -e '%foo=('a'=>'b',2=>4);print Data::Dump::dump(%foo);' ("a", "b", 2, 4) #レファレンスしたハッシュ $ perl -MData::Dump -e '%foo=('a'=>'b',2=>4);print Data::Dump::dump(\%foo);' { 2 => 4, a => "b" } #ハッシュレファレンス $ perl -MData::Dump -e '$foo={'a'=>'b',2=>4};print Data::Dump::dump($foo);' { 2 => 4, a => "b" } #Data::Dump::dumpの結果をevalしてみる $ perl -MData::Dump -e '$foo={'a'=>'b',2=>4};$bar=eval {Data::Dump::dump($foo)};print Data::Dump::dump($bar);' "{ 2 => 4, a => \"b\" }" #Data::Dump::dumpの結果をevalしてみる $ perl -MData::Dump -MData::Dumper -e '$foo={'a'=>'b',2=>4};$bar=eval {Data::Dump::dump($foo)};print Dumper($bar);' $VAR1 = '{ 2 => 4, a => "b" }'; #Data::Dump::dumpの結果をevalしてみる $ perl -MData::Dump -MData::Dumper -e '$foo={'a'=>'b',2=>+[9,8,7]};$bar=eval {Data::Dump::dump($foo)};print Dumper($bar);' $VAR1 = '{ 2 => [9, 8, 7], a => "b" }';