require Module::name;
あるいは
require "Module/Name.pm";
require
を利用すると、::
でsplitして/
で結合し、.pm
の拡張子をつけてくれるみたいな。
相対パスでrequireにパスを指定してModuleを読み込む。
PERL5LIBという環境変数にパスが格納されている。
例えば、以下のようなパスが環境変数PERL5LIB
に設定されているとする。
PERL5LIB=".:/usr/local/lib/perl5:/usr/local/lib/perl5/site_perl/"
これは:
で区切られたパスを複数指定されていることが多い。
複数パスで指定したときに、先頭からモジュールの検索が走る。
- 好きなところににモジュールがおける
- 好きなところからモジュールが読める
PERL5LIB
をよしなにする君。
cpanfileに記述したモジュールをlocal
ディレクトリにインストールしつつ、carton exec
コマンドで起動したコマンド関して、local
のディレクトリをパスに含めて実行してくれる。
globalにインストールされていないモジュール等をcpanfileに記述、carton install
を走らせた後、carton exec runner.pl
でやれば、そのモジュールを利用できる。
同時に、他のプロジェクト等globalを参照しているperlで、先ほどcpanfileでインストールしたモジュールは利用されない。
なぜならlocal
はパスに含まれないから。1
Footnotes
-
自ら
PERL5LIB
に追加した場合は除く ↩