20時07分00秒 [Perl/CGI]
Perlプログラム中から特定のモジュールを利用するにはuse
を使います。require
でも良いですが。違いは、useは実行前に読み込まれ、requireは実行時に読み込まれる点です。
例えば、CGI.pmを使いたいなら、
と書けば良いだけです。
で、CGI.pmくらいなら大抵のサーバにインストールされているでしょうが、サーバにインストールされていないPerlモジュールを使いたい場合(使わせたい場合)は、ユーザが自分でファイルを置ける位置にモジュールを置く(置かせる)しかありません。
その場合、use を書く前に、以下のようにモジュールを置いたディレクトリ(フォルダ)を記述しておく必要があります。
上記の場合は、Perlプログラムのあるディレクトリの中の modules ディレクトリにモジュールがある場合の指定。もちろん、書けるなら絶対パスで書いても構いません。
モジュール(のファイル)もPerlプログラムと同じディレクトリに置かせたい場合は、次のように、カレントディレクトリを指定すれば良いでしょう。
ちなみに、libモジュールを使わずに、直接@INC配列の中にパス(ディレクトリ名)を追加することもできます。
@INC配列の中には、require や use で指定されたライブラリやモジュールを探しに行くディレクトリ(「/usr/lib/perl5」とか)が入ってます。この配列に直接追加しても構いません。
ただし、これが有効なのは require を使って読み込む場合だけです。
useを使って読み込むモジュールはPerlプログラムの実行前に読み込まれます。なので、「@INC配列の中に指定のパスを加える」処理よりも前にモジュールの読み込み処理が実行されるわけですから、プログラム中で@INC配列の中身を弄っても間に合いません。(requireなら実行時に読み込まれるので間に合います。)
まあ、素直に(?)use lib qw(.);
を使っておきましょう。(^_^;)
この日記へのコメントはお気軽に! コメント数:0件
(前の記事) « 「ToHeart2 XRATED」ソースコード公開!?
前後のエントリ
< 旧 / 新 >
コメント数: 0件