Perlコーディング初心者質問スレ Part 60at PHPPerlコーディング初心者質問スレ Part 60 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト250:nobodyさん 09/11/19 15:05:03 pgc2wImK useでモジュールをロードできなかった場合に対処するコードを書いています。 eval "use Hoge::Hoge"; if ($@) { use Hoge::Hoge2; } ある程度うまくいくのですが、失敗する場合もあり、原因がわからずにいます。 まったく同じ内容でpackage名だけが違うモジュールでテストしてみると・・・ (内容は$nameの定義とエクスポートだけ) Hoge/Hoge.pm -> package Hoge::Hoge; Fuga/Hoge.pm -> package Fuga::Hoge; [1] eval "use Hoge::Hoge"; #=>存在するので読み込まれる [2] eval "use Fuga::Hoge"; #=>存在するのに$@がセットされる($@は空の様子) ※[1]と[2]は別々にテストしています。 [2]のエラーメッセージは Global symbol "$name" requires explicit package name at ... use strictをはずして警告を見てみると、 $nameを参照しようとしたときに次のメッセージが出ます。 Name "main::name" used only once: possible typo at ... [2]の場合も通常にuseすると問題ありませんし、次も成功します。 BEGIN { eval { require Fuga::Hoge; Fuga::Hoge->import(); }; if ($@) { (略) } } [2]だけ失敗してるいまいち理由がわからないんですが、 どういう状況か見当つきますか? 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch