Try::Tinyモジュールの実装方法
perlで例外処理をするモジュールとしてTry::Tinyがあります。
使うときは以下のように定義しますが、これが文法的にどうやって実装されているか確かめたくてモジュールを読んでみましたが、分かりませんでした。
Javaと同じような文法ですが、perlにはtry構文は用意されていません。
Try::Tinyがどうやってこの文法を実装しているの知りたいです。
perldoc Try::Tiny
try {
die_sometimes();
} catch {
# ...code run in case of error
} finally {
if (@_) {
print "The try block died with: @_\n";
} else {
print "The try block ran without error.\n";
}
};
以下、モジュールを使わず定義だけしてみて、B::Deparseで構文解析して内部でどう処理されているか確認しましたが、解析結果を見てもよく分かりませんでした。
perl -v: 5.16.2
osx: 10.9.5
$cat ./h.pl
#!/usr/bin/perl
use strict;
use warnings;
try {
print "try\n";
} catch {
print "catch\n";
};
$perl -MO=Deparse ./h.pl
use warnings;
use strict;
try {
print "try\n"
} (catch {
print "catch\n"
} );
./h.pl syntax OK
try()の引数にコードブロックとリストを渡しているのかな?と推察していますが、詳しく分かる方がいらっしゃたら教えてください。
よろしくお願いします。