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