- ベストアンサー
requireでreturnを使いたいのですが・・・
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
存在するかどうかわからないファイルをrequireしたい(が、存在しなかったときに エラー終了したくない)場合には よく使われているパターンがあります。 sub a { eval { require './a.cgi'; }; #無事require できたら戻る return unless $@; #requireで異常発生 print $@; } require は字面的にその場にファイルを読み込むのとは違いますので、 require される側の末尾に return を書いても require した側のreturnとして扱われることはありません。
その他の回答 (1)
- osamuy
- ベストアンサー率42% (1231/2878)
> もし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 のなんとかに入る戻り値をどなたか教えてください。
- ベストアンサー
- Visual Basic
- 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>
- ベストアンサー
- JavaScript
- 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; }; })();
- ベストアンサー
- JavaScript
- 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の知識はあまりなく、低レベルな質問かもしれませんが、よろしくお願いします。
- ベストアンサー
- Visual Basic
- MTを何度インストールしようとしてもエラーが出てしまいます
当方初心者なのですが、 何度MTをインストールしようとしても Got an error: MT/Author.pm did not return a true value というエラーが出てしまいます。 ちなみにサーバーは「ミニムレンタルサーバー」を使っています。 どなたかご存知の方、対処法を教えてください。
- 締切済み
- その他(インターネット・Webサービス)
- 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だろうが変わらない・・・みたいな 回答はご遠慮ください。
- 締切済み
- C・C++・C#