この記事は、 Perl Advent Calendar 2014の11日目の記事です。
前日は、mihyaeru21さんのPerlでベンチマークでした。
B::Deparseの紹介
B::DeparseというのがPerlにあります。
ゴチャゴチャしたコードをいい感じにして見たいよ〜って時便利です。
use strict; use warnings; print +('`'^'(').('`'|'%').('`'|',').('`'|',').('`'|'/').' '.('['^',').('`'|'/').('['^')').('`'|',').('`'|'$').'!';
こういうコードがあったとします。それをperl -MO=Deparse ...
で実行するだけです。
$ perl -MO=Deparse test.pl use warnings; use strict; print 'Hello world!'; test.pl syntax OK
なにこれすごい!!!!!!!!!!!!
Data::Dumperと使う
でもまあ、こんな意味不明なコードを仕事で見ることがない。これで終わるのも忍びない。どうしたもんかねーとPerl Advent Calendar 2014眺めてたら、パピックスが良い記事を書いてた。
DDPでdeparseを使う例がある。Data::Dumperはないじゃん!これだ!
通常、Data::Dumperにsubを渡すとこうなる。
use strict; use warnings; use Data::Dumper; my $code = sub { print "Hello, World"; }; print Dumper $code; __END__ $VAR1 = sub { "DUMMY" };
DUMMY!!!!!!!!!!!!!!!!!!わかりにくい!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
というわけで見るぞ!!!!!!!
use strict; use warnings; use Data::Dumper; $Data::Dumper::Deparse = 1; # 追加だ! my $code = sub { print "Hello, World"; }; print Dumper $code; __END__ $VAR1 = sub { use warnings; use strict; print 'Hello, World'; };
見れた!!!!!!!!!!!!!シュッ!!!!!!!!!!!!!!!!!!!!!としている!!!!!!!!!!!!!!!!!
まとめ
Data::DumperもB::Deparseを合わせて使える。
明日
明日は、zoncoenさんです。楽しみですね!