- ベストアンサー
requireで同じライブラリを複数回、呼び出すとどうなるか
perlでの話なのですがrequireを使って、 例えば、以下のようにした場合、 同じファイルを何回もコンパイルすることになるのでしょうか。 どなたか教えていただけないでしょうか。 @xx=(1,2,3); for(@xx){ require "xx.pl"; } どうしてもCGIがサーバーに与える負荷を軽減したいので、 無駄なコンパイルならば、一回だけrequireするようにしたいのです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
特に、意図があって見つけたページではありませんが 「perl require」で検索したらすぐに見付かりました http://cocohome.hp.infoseek.co.jp/perl_ref/require.html というのでどうでしょう。 実験してみるのが良いと思うので 呼び出される側のファイルで、読み込まれたときに 何か文字列をファイルか標準出力に出してみたらどうでしょう。
その他の回答 (2)
- sakusaker7
- ベストアンサー率62% (800/1280)
ドキュメント見れば書いてますよ。 perldoc -f require Otherwise, "require" demands that a library file be included if it hasn't already been included. The file is included via the do-FILE mechanism, which is essentially just a variety of "eval" with the caveat that lexical variables in the invoking script will be invisible to the included code. Has semantics similar to the following subroutine: Note that the file will not be included twice under the same specified name. perldoc.jp あたりに日本語訳されてるものもあるはずです。 ファイル名は perlfuc です。
お礼
わざわざ、ドキュメントをコピーして見せてくださり、 ありがとうございます。 私は、perl素人なので、そういうところを見るなんて思いつきませんでした。 これからは、もう少しちゃんと調べてから、質問するようにします。
コンパイルではない気も。 まぁ、それはさておいて、ループないのファイル読み込みは、あまりお行儀がよくないですよ。 一度ファイルを読み込んで、その中にある関数を読み込んだ方が、処理も軽いかと。
お礼
ご指摘ありがとうございます。 ですが、どうしても、ループ中に読み込まないといけないところ (ループ開始前にはライブラリ内のサブルーチンが必要かどうか判断できない、 というより、調べようと思えばできるけど、無駄な処理が増えるだけ)があるので、 なんとかしたかったのです。
お礼
requireについて書かれたページを見つけてくださり、 ありがとうございます。 後で、実験してみようと思います。