パスの追加 use-lib (@INC変更)

back
use lib "/aaa/bbb/ccc";

これで、/aaa/bbb/ccc 以下にある .pm を使用可能
ただし、変数に格納されているパスを指定しても動かない

use lib $path_modules;   <= N.G.

これは、use によるモジュールのロードがコンパイル時に行われ、
実行時に処理される $path_modules 変数がコンパイル時には undef になっているから。

$path_modules にどーしても代入した上で lib use したいなら、
BEGIN ブロックでおこなう

BEGIN {
  $path_modules = "........";
	use lib $path_modules;
}

つーかこんなことしなくても、変更されないパスならそのまま書けばよいし、
実行ファイルからの相対パスを(実行ファイルのパスに関係なく)常に指定したいなら、
次のようにすれば OK

use FindBin qw($Bin);    # $Bin に実行ファイルのパスが入る
use lib $Bin;            # パス $Bin のモジュールをロード

実行ファイル以下に lib とかのサブディレクトリを使っているなら、適時修正

use lib $Bin."/lib";

back