PR

モジュールが利用可能かで条件分岐するには?

自分が作ったモジュールを、他の場所で利用したいとき、エラーの特定に時間がかかることがある。
特にモジュール関係でエラーがあり、sshなどで確認できない場合はブラウザに500エラーが出るだけのこともある。
そこで、エラーメッセージをわかりやすく表示すると汎用性が増すかもしれない。

スポンサードリンク

◆標準的

わざわざ書かなくてもperlがエラーを出してくれるけど。

eval ‘use Oraperl; 1’ || die $@ if $] >= 5;
eval ‘require Oraperl; 1’ || die $@ if $] >= 5;
eval {require Oraperl; 1} || die $@ if $] >= 5;

◆コンパイル時にエラーを出させる

BEGIN {
eval {
require Digest::MD5;
import Digest::MD5 ‘md5_hex’
};
if ($@) { # ups, no Digest::MD5
require Digest::Perl::MD5;
import Digest::Perl::MD5 ‘md5_hex’
}
}

◆実行時に分岐する

eval{
require HOGEHOGE;
};

if($@){
print “Load NG\n”;
}else{
import HOGEHOGE qw(a b c);
print “Load OK\n”;
}

参考文献

コメント