12.2 requireまたはuseのエラーを捕捉する

requireまたはuseをevalの引数として書き、そのevalをBEGINブロックの中に書く。

  • モジュールをインポートしない場合
BEGIN {
  unless (eval "require $mod; 1") {
    warn "Couldn't require $mod: $@;
  }
}
  • モジュールを現在のパッケージにインポートする場合
BEGIN {
  unless (eval "use $mod; 1") {
    warn "Couldn't use $mod: $@;
  }
}