Perl は人間にやさしい言語です。フィーリングでソースコードを解釈してくれますが、ときどき気があわなくてプログラマがおもってるのと違う解釈をしてくれるときがあります。Perl がどういう風に解釈しているのかを知るのには B::Deparse が有効です。
% perl -MO=Deparse,-print -e 'xxx { die "SSS" }'
do {
die 'SSS'
}->xxx;
-e syntax OK
このように、そのソースコードがどういう風に解釈されるのかということを教えてくれます。
また、応用するとコードリファレンスも解析することができます。
% perl -e 'use B::Deparse; print B::Deparse->new("-p", "-sC")->coderef2text(sub { 3+2 })';
{
5
}
Perl は、ソースコードを最適化するときに定数畳み込みを行っていることがこれでわかります。
Perl が挙動不審なときにはぜひためしてみてくださいね。
Last modified: $Date: 2008-05-22T09:21:23.154313Z $