2012-11-29 51 views
0

這裏是我的項目:在子目錄中執行Perl程序?

assembler/ 
    asm.pl    # Main entry point 
    instructions.pm 
    support.pm 
build.sh 

---- assembler/asm.pl ---- 
... 
use instructions; 
... 

---- assembler/instructions.pm ---- 
... 
use support; 
... 

我希望有build.sh包含這樣一行:

perl assembler/asm.pl $1 

asm.pl嘗試使用相關的模塊,它無法找到他們。這條線的工作,但感覺骯髒,可恥的:

cd assembler; perl asm.pl ../$1; cd .. 

什麼是執行asm.pl正確的方法是什麼?我希望直接從任何其他任意位置執行位於文件系統任何位置的程序,例如,

$ cd /some/dumb/path 
$ /path/to/the/project/build.sh /another/goofy/path.asm 
+1

如果您使用'-I'選項,例如, 'perl -I彙編程序'? – jheddings

回答

4

我相信問題是,perl試圖找到相對於您執行的路徑的庫。這就是爲什麼運行CD首先修復它。你的另一個選擇是告訴perl它可能在哪裏找到這些文件。您可以使用PERL5LIB環境變量或-I開關執行此操作。這應該這樣做:

perl -I./assmbler/ assembler/asm.pl $1