这是我的项目:
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
答案 0 :(得分:4)
我认为问题在于perl正试图找到相对于你正在执行的路径的库。这就是为什么先运行cd修复它。你的另一个选择是告诉perl它可能找到文件的位置。您可以使用PERL5LIB环境变量或-I开关来执行此操作。这应该这样做:
perl -I./assmbler/ assembler/asm.pl $1