2016-06-22 79 views
2

我有一個用於在chroot中運行的perl腳本,現在我希望它在chroot之外運行。這意味着我必須指出perl僅查找/ where/chroot/used/to/be/usr/lib而不是/ usr/lib中的庫和模塊。我試着用@INC推入腳本里面添加新的目錄,但是依賴關係仍然被破壞,看着舊的dirs。用Perl從命令行替換@INC

當我運行腳本時,有沒有什麼辦法可以告訴perl,我只希望它看起來像庫和模塊的某些目錄?

或者還有另一種更好的方法來確保當非常規目錄(/ usr/bin,/ usr/lib等)被非標準目錄代替時,依賴關係仍然有效嗎?

回答

3

要通過命令行改變@INC,使用-I選項:

perl -lIadded -e 'print for @INC' 

在程序中,你需要在編譯期間修改@INC早期,足量,即。

export PERL5LIB=/path/... 
perl -e 'print for @INC' 
+0

@PerlDog:感謝您的建議。 – choroba

0

可以使用LIB把任何新的目錄:這可以通過

BEGIN { unshift @INC, '/path/...' } 

或使用lib

use lib '/path/...'; 

您還可以設置PERL5LIB環境變量來實現在你的程序中。

例如

use lib "path"; 
你的情況

只是在你的程序

use lib "/usr/lib/"; 

希望這會爲你工作的開始加入這一行。