4

Perl スクリプトを使用して、ツール (wpj) に特定のディレクトリを追加しようとしています。直接コマンドは次のようになります

$ wpj add path/to/desired/library makefile.wpj

これの多くを行う必要があるため、これを自動化するスクリプトを実行したいと考えています。ただし、特に「wpj」を作成するために、非常に特別な環境変数のセットが設定されています。Perl から逆引用符を付けて wpj を呼び出すと、呼び出しが失敗します。以下のコードを見ることができます

$command = "wpj add library path\\to\\file.wpj \\path\\to\\add";
print $command."\n";
$result = `$command`;
print "->".$result."\n";

このために私は得る

wpj: not found

ただし、シェルからの同じ呼び出しは成功します。何かが正しくエクスポートされていません。バッククォートで作成されたサブシェルに呼び出し環境をエクスポートする方法を教えてください。

4

2 に答える 2

6

PATHを確認し、必要に応じてその内容を変更します。

use Env qw(@PATH);

# check the PATH:
print join("\n", @PATH);

# modify its content:
push @PATH, "/usr/bin/wpj";

このモジュールの公式マニュアル。

于 2012-07-18T13:34:46.767 に答える
4

何もしなくても環境は引き継がれます。wpj実行可能ファイルではなく、シェルエイリアスであると思われます。そのため、そのエイリアスが定義されているシェルでコマンドを実行する必要があります。エイリアスの作成方法によっては、対話型シェルが必要になる場合があります。

system('bash', '-i', '-c', 'wpj add path/to/desired/library makefile.wpj');
于 2012-07-18T17:08:23.733 に答える