dポイントプレゼントキャンペーン実施中!

お世話になります。
sub a{
if (-e "./a.cgi"){
repuire "./a,cgi";
}
...
}
としてa.cgiのなかにreturn関数を入れ、もしa.cgiが存在するならサブルーチンを終了させたいのですがdid not return a true value atエラーが出ました。
戻り値を1としたらエラーは消えましたが...の部分が実行されました。
どなたか解決方法お分かりになる方いましたらご教示お願い致します。

A 回答 (2件)

存在するかどうかわからないファイルをrequireしたい(が、存在しなかったときに


エラー終了したくない)場合には
よく使われているパターンがあります。

sub a {
eval {
require './a.cgi';
};

#無事require できたら戻る
return unless $@;

#requireで異常発生
print $@;
}

require は字面的にその場にファイルを読み込むのとは違いますので、
require される側の末尾に return を書いても
require した側のreturnとして扱われることはありません。
    • good
    • 0

> もしa.cgiが存在するならサブルーチンを終了させたい


という事なら、
sub a{
if (-e "./a.cgi"){
repuire "./a,cgi";
return;
}
...
}
――で済むのでは。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!