在子目录中执行Perl程序?

在子目录中执行Perl程序?,perl,bash,Perl,Bash,以下是我的项目: 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 assemb

以下是我的项目:

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

我认为问题在于perl试图找到与执行路径相关的库。这就是为什么运行cd首先修复它。另一个选项是告诉perl在哪里可以找到文件。您可以使用PERL5LIB环境变量或-I开关来实现这一点。这应该做到:

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

我认为问题在于perl试图找到与执行路径相关的库。这就是为什么运行cd首先修复它。另一个选项是告诉perl在哪里可以找到文件。您可以使用PERL5LIB环境变量或-I开关来实现这一点。这应该做到:

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

如果您使用
-I
选项,例如
perl-I汇编程序,它是否适用于您的用例?如果您使用
-I
选项,例如
perl-I汇编程序,它是否适用于您的用例?