スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Perの"use lib" 

Perlでuse libする時があるが、そのきちんとした意味がよく分からない。スクリプトと同じディレクトリにあるモジュールをuseしたいときには事前に

use FindBin;
use lib $FindBin::Bin;

とすることでいける。どういう仕組みなんだっけ?
まずperldoc FindBinしてみたところ、"FindBin - Locate directory of original perl script"とのこと。

EXPORTABLE VARIABLES
$Bin - path to bin directory from where script was invoked
$Script - basename of script from which perl was invoked
$RealBin - $Bin with all links resolved
$RealScript - $Script with all links resolved

とりあえずこんな感じのスクリプトで確認できる。

use FindBin;
print("\$Bin - $FindBin::Bin\n");
print("\$Script - $FindBin::Script\n");
print("\$RealBin - $FindBin::RealBin\n");
print("\$RealScript - $FindBin::RealScript\n");

一つのインタプリタ内で複数回のuse FindBin;は失敗するとのこと。

次にperldoc libすると"lib - manipulate @INC at compile time"とのこと。コンパイル時に@INCを追加(no lib LISTなら削除)するだけ。簡単だ。これで最初のコードがどのような動きをしているのか分かった。

コメント

コメントの投稿















管理者にだけ表示を許可する

トラックバック

この記事のトラックバックURL
http://haginov.blog35.fc2.com/tb.php/126-4a6814b8

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。