perlモジュールの検索PATHについて †まず perlの実行タイミングは、以下の2つあるらしい。 perlではモジュールを読み込むのに use や require を使うが
で、use などを使用してモジュールを読み込む際には、 つまり MyClass.pm が カレントディレクトリ/pm 配下にある場合、 unshift @INC, "./pm"; # (2) use MyClass; # (1) 以下ならOK use lib qw(./pm); use MyClass; 但し、mod_perl の場合はフルpath指定が必要。 use lib qw(/path/to/pm); use MyClass; または BEGIN { unshift @INC, "/path/to/MyClass"; # または /path/to/pm } use MyClass; 以前、mod_perl時の注意点で書いたメモで ○mod_perlでない時 だったのは use lib qw(./pm) がmod_perlでない時だけ有効なPATHを指してした為だと思われる。 なので「 mod_perlの時はunshift、push で変更を加えた @INC(モジュール検索PATH)が使用されない 」という事ではない。 というか mod_perl 時は startup.pl を使って自作モジュールを読み込むのが一般的?らしい。 httpd.confの記述 PerlRequire /path/to/startup.pl モジュールがガンガン増えていく場合 その辺をいろいろ考えると「あまり使用しないモジュールを必要な時だけ読み込みたい」場合などは |