python における
try: statements except name: statements else: statementsに直接相当する機構は perl にはありません。 ですが、perl で同様のことを実現するためには次のような構文を用いること ができます。
# try
eval {
statement;
croak(""); # raise
}
# except
unless ($@) {
statements for exception;
}
# else
else {
statements;
}catch throw のようなフレーズを使えるするようにする perl module もあるのですが、 素直に eval $@ 機構を使う方が分かり易いと思います。
最大の問題は、どれだけのエラー情報を呼出側に伝えるかという作りの部分で すね。なやましいです。
croak() からどうやってトラップのエラー情報を上げるか?
一つの案は
croak("__ERROR_$keyword__");
croak("__ERROR_$keyword__: $reason");
形式です。
たとえば
croak("__ERROR_cgi.insecure__: $reason");
$keyword の部分で messages のキーを渡すようにする。
でも、パラメータは?…パラメータまではむずかしいなぁ。どうするかなこのレベルでは、UNIX のエラーシステムと同程度なんですね。 数字が文字列に変わっただけです。
Copyright (C) 1993-2025 Ken'ichi Fukamachi mail:< fukachan at fml.org >