• ベストアンサー

'cgi-lib.pl'などのファイルの位置は?

Perlの基本的な質問ですが、cgi-lib.plやjcode.plは どのディレクトリに入れれば自然でしょうか? 私はLinuxとWindowsの両方にPerl5.6を入れておりまして、今までは相対パスによって、スクリプトの近くに置いていましたが、ディレクトリ(フォルダ)が変わるごとに設定しなおしで面倒になってきました。 WEBでもレンタルサーバーなど利用したことは無いんですが、このような基本ライブラリは、require 'cgi-lib.pl';で呼び出して?いると思いますが、 しかるべき位置にこのファイルが無いとだめだと思います。ご教授ください。

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

  • ベストアンサー
  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.2

Perlは、探索パスを保持している「@INC」という特殊配列変数からモジュールを検索します。 パスの一番最後には「.」がありますので、最後にはcgiが実行されるカレントにある モジュールが見つかります。 # perl -e 'print @INC' /usr/local/lib/perl/5.6.1 /usr/local/share/perl/5.6.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.6.1 /usr/share/perl/5.6.1 /usr/local/lib/site_perl . @INCに 以下の様に明示的に、自分専用の探索パスをセットする方法もあります。 use /my_home/cgi-bin/mylib require cgi-lib.pl

その他の回答 (3)

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.4

kounesi さん、失礼しました。 #3の回答とおり「lib」を書き忘れていました。 「use /my_home/cgi-bin/mylib」 は書き間違いです。

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.3

> use /my_home/cgi-bin/mylib これは誤った使い方です。 通常はlibモジュールで@INCに追加します。 use lib '/my_home/cgi-bin/mylib'; なお、どこから呼び出す場合も require 'cgi-lib.pl'; でかつ libでの追加が面倒な場合は、 @INCでデフォルトで探し出す一覧に入っているディレクトリ、つまり /usr/local/lib/site_perl などに(いずれかひとつのディレクトリ) cgi-lib.pl を入れておけばOKです。

  • namiri_e
  • ベストアンサー率37% (37/98)
回答No.1

普通、スクリプトと一緒のディレクトリにおいていますよね。 私の場合、同様のプログラムごと(掲示板なら掲示板ごと)にディレクトリを作っていますので、 その中に一つずつ、相対パスで大体「../****.pl」となる位置においています。

関連するQ&A