Memoize |
BasicWerk
EC Support
Technique
Facebook
|
20141120000900_Perl_FindBin_and_lib |
Perl_FindBin_and_lib
FindBin モジュールは、スクリプトが置かれている path へのフルパスを $Bin 変数に格納して返す。 FindBin.pl #! /usr/bin/perl use warnings; use strict; use FindBin qw( $Bin ); print "$Bin\n";
% FindBin.pl /Users/Path/To/Here
これを利用すると、必要なモジュールをスクリプトとの相対関係で設置して lib プラグマに渡すことができる。
use FindBin qw( $Bin ); # スクリプトと同じディレクトリ use lib $Bin; # lib という名前のサブディレクトリ use lib "$Bin/lib"; # カレントディレクトリから一つ上がって # lib という名前のディレクトリへ下る use lib "$Bin/../lib";
モジュールサーチパスの解決方法はもうひとつ。 シェル環境変数の PERL5LIB にディレクトリ名を設定しておくと @INC 同様にモジュールが検索される。
例えば、~/.zshrc などに export PERL5LIB=~/perl5lib と書き込んで、シェルを新しく起動するか、source ~/.zshrc すれば、環境変数が有効になる。 % echo $PERL5LIB /Users/me/perl5lib @INC を確認してみると、先頭に追加されている。 % perl -le 'print for @INC' /Users/me/perl5lib /opt/local/lib/perl5/... ... ...
|
© Shin Nakamura/BasicWerk 2014 |