• ベストアンサー

requireでreturnを使いたいのですが・・・

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

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

存在するかどうかわからないファイルをrequireしたい(が、存在しなかったときに エラー終了したくない)場合には よく使われているパターンがあります。 sub a { eval { require './a.cgi'; }; #無事require できたら戻る return unless $@; #requireで異常発生 print $@; } require は字面的にその場にファイルを読み込むのとは違いますので、 require される側の末尾に return を書いても require した側のreturnとして扱われることはありません。

その他の回答 (1)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

> もしa.cgiが存在するならサブルーチンを終了させたい という事なら、 sub a{ if (-e "./a.cgi"){ repuire "./a,cgi"; return; } ... } ――で済むのでは。