0

これが私のプロジェクトです:

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
4

1 に答える 1

4

問題は、実行元のパスに関連するライブラリを perl が見つけようとしていることにあると思います。そのため、最初に cd を実行すると修正されます。もう 1 つのオプションは、perl にファイルの場所を伝えることです。これは、PERL5LIB 環境変数または -I スイッチを使用して行うことができます。これはそれを行う必要があります:

perl -I./assmbler/ assembler/asm.pl $1
于 2012-11-29T23:53:13.483 に答える