• ベストアンサー

requireで同じライブラリを複数回、呼び出すとどうなるか

perlでの話なのですがrequireを使って、 例えば、以下のようにした場合、 同じファイルを何回もコンパイルすることになるのでしょうか。 どなたか教えていただけないでしょうか。 @xx=(1,2,3); for(@xx){ require "xx.pl"; } どうしてもCGIがサーバーに与える負荷を軽減したいので、 無駄なコンパイルならば、一回だけrequireするようにしたいのです。

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

  • ベストアンサー
回答No.2

特に、意図があって見つけたページではありませんが 「perl require」で検索したらすぐに見付かりました http://cocohome.hp.infoseek.co.jp/perl_ref/require.html というのでどうでしょう。 実験してみるのが良いと思うので 呼び出される側のファイルで、読み込まれたときに 何か文字列をファイルか標準出力に出してみたらどうでしょう。

m_angel
質問者

お礼

requireについて書かれたページを見つけてくださり、 ありがとうございます。 後で、実験してみようと思います。

その他の回答 (2)

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

ドキュメント見れば書いてますよ。 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 です。

m_angel
質問者

お礼

わざわざ、ドキュメントをコピーして見せてくださり、 ありがとうございます。 私は、perl素人なので、そういうところを見るなんて思いつきませんでした。 これからは、もう少しちゃんと調べてから、質問するようにします。

noname#58606
noname#58606
回答No.1

コンパイルではない気も。 まぁ、それはさておいて、ループないのファイル読み込みは、あまりお行儀がよくないですよ。 一度ファイルを読み込んで、その中にある関数を読み込んだ方が、処理も軽いかと。

m_angel
質問者

お礼

ご指摘ありがとうございます。 ですが、どうしても、ループ中に読み込まないといけないところ (ループ開始前にはライブラリ内のサブルーチンが必要かどうか判断できない、 というより、調べようと思えばできるけど、無駄な処理が増えるだけ)があるので、 なんとかしたかったのです。

関連するQ&A