我有一個使用已安裝軟件包的Perl腳本。一個是Perl包,另一個是Perl XS包。如何將Perl模塊包含與程序相關的路徑?
現在我想調用此腳本,但使用未安裝的包,但使用路徑名稱相同的包。
我以前perl -I /home/.../lib script.pl
,但它不工作
我該怎麼辦呢?
我有一個使用已安裝軟件包的Perl腳本。一個是Perl包,另一個是Perl XS包。如何將Perl模塊包含與程序相關的路徑?
現在我想調用此腳本,但使用未安裝的包,但使用路徑名稱相同的包。
我以前perl -I /home/.../lib script.pl
,但它不工作
我該怎麼辦呢?
對於影響您的模塊被加載的各種方法,請參閱本SO發佈:
,你能否告訴我們的目錄的遞歸上市那裏你存儲你想要的模塊使用? ls -R
可以幫助我們找出是否有正確的路徑。
當您使用-I
開關時,您必須確保您在那裏找到正確的路徑。如果你使用一個模塊:
use Some::Module;
的Perl實際上看起來爲:
$lib/Some/Module.pm
的$lib
是@INC
的目錄之一。另一種說法是,如果特定目錄不在@INC
中,Perl不會查看它。這意味着Perl不會自動在你的子目錄中查找
如果你的模塊不在那個位置,那麼Perl不會在那個$lib
周圍翻遍尋找它。你的XS模塊可能不是這樣存儲的。它可能路徑中有一個Perl的版本和結構的項目,所以你可能會發現它在:
$lib/5.10.1/darwin-2level/Some/Module.pm
你需要,如果你正在使用-I
自己添加這些路徑。
但是,您可以在命令行上加載模塊。這是很容易使用lib
,增加了額外的目錄,爲您提供:
perl -Mlib=/path/to/lib ...
-I和-Mlib的優缺點什麼 – justintime 2010-09-09 01:08:17
好處和風險取決於你在做什麼。還有一個是向@INC添加arch和版本dirs,無論好壞取決於你想要的。 – 2010-09-09 05:11:53
看哥們,不工作是一個強烈的聲明。它整天坐在沙發上嗎?它在你臉上嗎?它需要更多的錢嗎?它和你的女朋友在睡覺嗎?請具體! :-) – rafl 2010-09-08 14:11:54
所以問題是你正在嘗試加載你自己的軟件包,但是正在加載一個默認軟件包呢? – flies 2010-09-08 17:51:21