• ベストアンサー

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

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

  • Perl
  • 回答数2
  • ありがとう数0

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

  • ベストアンサー
  • 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; } ... } ――で済むのでは。

関連するQ&A

  • Filter関数を用いた結果、何も検索されなかった場合

    Filter関数を用いた結果、何も検索されなかった場合 以下のプログラムを実行したところ、セルはまっさらのまま。   Sub Macro3()     Dim a As Variant     a = Array(1, 2, 3, 4, 5)     ActiveCell.Value = Filter(a, 8)   End Sub そこで   If Filter(A,8) = "" Then ・・・(1)     ActiveCell.Offset(1, 0).value = False   Else表示     ActiveCell.Offset(1, 0).value = True   endif を書き加えてみましたところ、   実行時エラー'13':   型が一致しません とのエラーが出ます。 (1)を   If ActiveCell.value = "" Then と書く分には問題ないのですが、だからと言って、Filter(A,8)の値は""で表せないのですね。 とりあえずこの五行はエラーが出ているので削除しました。 次に   ActiveCell.Offset(1, 0).Value = IsEmpty(Filter(A, 8)) を書き加えると、アクティブセルの一つ下は「False」となります。Filter(A,8)では何も抽出されないのですから、空か否かを問われたら「True」のはずなのですが・・・やはり何か戻り値があるのですね・・・ ではエラー値が戻っているのかと   ActiveCell.Offset(2, 0).Value = IsError(Filter(A, 8)) を書き加えると、「False」ですからエラー値ではありません。   If Filter(A,8) = Null Then ・・・(2)     ActiveCell.Offset(3, 0).value = False   Else表示     ActiveCell.Offset(3, 0).value = True   endif を書き加えたところ、またも   実行時エラー'13':   型が一致しません とのエラーが出ます。 (2)を   If Filter(A,8) = Error Then と書き換えてみても同じです。 試しに(2)を   If Cvar(Filter(A,8)) = Null Then としてみたり   If Filter(A,8) = Cvar(Null) Then としてみたり   If Cvar(Filter(A,8)) = Cvar(Null) Then としてみたりしましたが、同じエラーが出ます。 Ubound(Filter(A,8)の値は-1です。これをもってこの場合の戻り値とするしかないのでしょうか。filter関数の戻り値が分からないからUbound関数を使っていることがモロばれで、嫌なんです。   If Filter(A,8) = なんとか Then のなんとかに入る戻り値をどなたか教えてください。

  • requireの使い方のどこがおかしいのでしょう?

    言語はperlです。 789.cgiから456.plを呼び出したいのですが、シンタックスエラーが出てきます。 789.cgiのrequireに関する行をコメントにしたら実行されるのですが…。 requireを使わずに、サブルーチン自体を789.cgiの中に書き込むことには成功しているのですが、 イマイチrequireを使った呼び出しのコツがわかりません。 どなたかご教授下さい。 以下にスクリプトを示しておきます。 よろしくお願いします。 *****以下789.cgi***** #!/usr/local/bin/perl use CGI::Carp qw(fatalsToBrowser); require "456.pl"; $a=12; $b=15; $d="xxxxxxxx"; $d=&plus(); print "content-type:text/html\n\n"; print <<"HTML_HTML"; <html> <head> <title> ヒアドキュメント </title> <body> ***** <br> $d <br> ***** <br> $a <br> ***** <br> $b <br> ***** </body> </html> HTML_HTML ***********以下456.pl************ sub plus { my $a=10; my $b=10; $c=$a+$b; return $c; }

    • ベストアンサー
    • CGI
  • 関数から関数を呼び出したときのリターン処理について

    宜しくお願いいたします。 ユーザー定義関数からユーザ定義関数を呼び出す必要があり 以下の様にしてみたところ function chk($value) {    if ($value>0) {       return TRUE;    }    return FALSE; } function test(){    $a = 0;    $b = -1;    $c = 2;    $txt = '';    if (chk($a)) {       $txt .= 'aはhoge<br>';    }    if (chk($b)) {       $txt .= 'dはhoge<br>';    }    if (chk($c)) {       $txt .= 'cはhoge<br>';    }    return $txt; } 最初の chk($a) で処理が終わってしまいます。 この場合 chk() の return が test() をも止めてしまっているのでしょうか? return で調べて見ると 呼び出し元のスクリプトに戻る というような解説だったので test() に戻って処理の続きをしてくれる と思ったのですがうまくいきません。 これを return $txt; まで処理させるにはどのようにしたらよいでしょうか? できれば chk() をTRUE、FALSEの判定に使いたいと思います。 何卒ご教授のほどよろしくおねがいします。

    • ベストアンサー
    • PHP
  • 関数の引数に未定義の変数を渡すとエラーが出る

    自作の関数で、issetとemptyを一緒に判定する関数を作っているのですがエラーが出ます。 ある変数が「未定義」または「null」または「""(空白)」の場合はnullである、という関数を作りたいです。 ------------------------------------------ function is_null_ex($value){  if (!isset($value)) {return true;}               // 未定義かnullの場合、trueを返す  else if (strlen(strval($value)) === 0) {return true;}   // 空白の場合はtrueを返す  else {return false;}                      // $valueに値が入っている場合はfalseを返す } is_null_ex($val); ------------------------------------------ 上記の関数で$valueが未定義の場合にfuncを使うと、次のようなエラーが出ます。 Notice: Undefined variable: val つまり、未定義の変数を引数に渡すとエラーが出ます。 「未定義なら関数に渡さなければ?」と思うかもしれませんが、そもそもこの関数は「未定義」または「null」または「""(空白)」を判定したい関数なのです。 この場合、どうすれば良いのでしょうか? エラーは出ますが上記の関数で「if (!isset($value)) {return true;}」の部分できちんと判定はされています。 PHP5.3系で運用しています。 ぞうぞよろしくお願い致します。

    • ベストアンサー
    • PHP
  • returnの戻り値について

    以前の質問を見ていてひとつわからないことがあるのです。 内容をそのままコピーしたのですが、この場合、キーが押されたときに関数を呼び出し、 returnで戻り値が「true/false」とありますが、戻ってきたときはどこにtrue/falseが入っているのですか? <BODY> <FORM NAME="f" ACTION="UPDATE" METHOD="POST" TARGET="FRAME_D" onSubmit="return conf();"> <INPUT TYPE="TEXT" NAME="FM_KINGAKU" onKeyDown="return keyCheck(event.keyCode);" > <SCRIPT TYPE="text/javascript" SRC="./JS.SOURCE"></SCRIPT> <SCRIPT TYPE="text/javascript"> <!-- function keyCheck(keyCodes){ if((keyCodes >= 49 && keyCodes <= 57) || (keyCodes >= 96 && keyCodes <= 105) || keyCodes == 46 || keyCodes == 8) return true; else return false; } // --> </SCRIPT> </FORM> </BODY>

  • PHPのreturnについて

    function hoge(){ if(条件){ return false; } 処理A; return true;  } 上記のような場合if文内通ると、return falseするのでその後の処理Aは走らないですよね? 頭がこんがらがってきました・・・

    • ベストアンサー
    • PHP
  • javascript 一回目実行

    失礼します現在一回目だけ処理したい内容があり、サンプルコードを探してみたのですが、 処理の流れがわからない状態です汗 ご教授頂けると助かります //即時関数 var trueOnlyFirstTime = (function(){ var b = true; //戻り値として関数を実行する return function(){ if(b){ b = false; return true; } return false; }; })();

  • VBのReturnの使い方

    Excel2007のVBで以下のfunctionを定義すると、Returnのところでコンパイルエラーになります。 -------------------------------------- Public Function IsTen(lNumber As Integer) As Boolean If lNumber = 10 Then Return True Else Return False End If End Function -------------------------------------- ググってみるとReturn True とか Return False とかができるように思えるのですが、何が不味いのでしょうか? VBの知識はあまりなく、低レベルな質問かもしれませんが、よろしくお願いします。

  • MTを何度インストールしようとしてもエラーが出てしまいます

    当方初心者なのですが、 何度MTをインストールしようとしても Got an error: MT/Author.pm did not return a true value というエラーが出てしまいます。 ちなみにサーバーは「ミニムレンタルサーバー」を使っています。 どなたかご存知の方、対処法を教えてください。

  • C# こういう場合ってどうなるの?

    public void A(bool b) {   if(b ? B() : C())//分かると思いますが、三項演算子   {     //略   } } public bool B() {   return true; } public bool C() {   return false } 上記のAにtrueを渡し実行した場合、 if文の中はどうなるのでしょうか? 引数がtrueならBを実行し、Bの戻り値trueが if文で処理され、if内に入る・・・でよろしいのでしょうか? それとも引数bの評価がそのままifで使われるのでしょうか? 例えばのコードなので、bだろうがBだろうが変わらない・・・みたいな 回答はご遠慮ください。