0

この権利を Google で検索する方法がわかりません: で外部ツールを呼び出したいPerl- ルート以外にインストールされたモジュールの場合、ディレクトリを に追加できます@INC。ただし、これは他のバイナリ/実行可能ファイルでは機能しません。たとえば、Perlfile は/home/user/dev/perl.pl、モジュールは/home/user/dev/modules/、Pythonscript は です/home/user/dev/tools/python.py。これでpush @INC,'/home/user/dev/modules/'、すべてのモジュールを見つけることができます。pythonscript の場合、パス全体を使用する必要がありますsystem("python /home/user/dev/tools/python.py")。tools ディレクトリをビルド PATH に追加せずに自動的に検索する可能性はありますsystem("python python.py")か? どうも

4

4 に答える 4

0

ニーズに合う場合と合わない場合がある代替アプローチ:

システムを呼び出す前のどこか:

chdir '/home/user/dev/tools' or die "Couldn't chdir to tools: $!\n";
于 2013-02-03T19:38:18.953 に答える
0

Perlスクリプト内からPATH変数へのパスを追加できます。

$ENV{PATH} .= ':/home/user/dev/tools';

通常のように、設定は親プロセスのPATH変数を変更できず、スクリプト自体とその子プロセスのみを変更します。

于 2013-02-03T19:16:58.550 に答える
0

Python スクリプトに正しいシェバン行 (たとえば#!最初の行) が python を指している場合、これを行う必要はありませんsystem("python /home/user/dev/tools/python.py")- それだけsystem("/home/user/dev/tools/python.py")で十分です。

そうすれば、Python 検索に頼る必要はありません$PATH

次に、$PATH を変更できます。

local $ENV{PATH} = $ENV{PATH} ? "$ENV{PATH}:/home/user/dev/tools" 
                              : "/home/user/dev/tools";

system("python.py");

(プログラムの他の場所の PATH に影響を与えないように、これを必ずローカライズしてください)

于 2013-02-03T19:28:10.897 に答える
0

アップデートに関しては、

perl.pl で $ENV を設定しても影響はありません。$export PATH=$PATH:/home/user/dev/tools で、シェルから $python.py を実行すると動作します。

それは真実ではない。それが機能する場合は、Perlを設定し$ENV{PATH}て実行することもできます。python.py

local $ENV{PATH} = "$ENV{PATH}:/home/user/dev/tools";
system("python.py");
于 2013-02-03T21:38:44.413 に答える