2011-12-11 81 views
4

我有一個腳本,它使用標準Perl庫外部的模塊,並希望以某種方式使用它們。我沒有權限將它們安裝到Perl lib目錄中,並想知道是否可以讓這些外部模塊駐留在我的腳本目錄中。FindBin for perl模塊,位於我的腳本目錄

我已閱讀關於使用FindBin,但它似乎無法正常工作。我是否正確使用它?

現在我想使用3個模塊我想使用(2是目錄)。因此,假設我的腳本位於Dir1中,那麼我的模塊將位於Dir1的子目錄Dir2中。

因此,假設FindBin找到Dir1,那麼我所要做的就是這樣嗎?

use FindBin '$Bin'; 
use Dir2 "$Bin/Dir2"; 
use Dir2::SubDir_ofDir2_1::Module1; 
use Dir2::Module2; 
use Dir2::Module3; 

我的程序似乎運行,但它什麼也沒做。所以我很確定它沒有正確導入模塊。

感謝

+0

改爲考慮[local :: lib](http://p3rl.org/local::lib)。從[Stack Overflow Perl FAQ](http://stackoverflow.com/questions/tagged/perl?sort=faq):[我如何使用CPAN作爲非root用戶?](http://stackoverflow.com /問題/ 2980297 /如何-可以-I-使用-CPAN-作爲一種非根用戶) – daxim

回答

7

正確的方式做它更可能是兩種:

use lib "$FindBin::Bin/Dir2"; 
use SubDir::Module1; 

或:

use lib $FindBin::Bin; 
use Dir2::Subdir::Module; 

雙方將找到文件,行爲會那麼依賴於是否模塊聲明自己是否在package Dir2之內。

檢出FindBinlib的文檔。