Perl からシステム コマンドの動的リストを実行しています。これらのコマンドは、環境変数に (一時的/処理中の) 変更を加えるスクリプトである場合があります。たとえば、次の単純なスクリプトを考えてみましょう (現在は Windows 用に作成されています)。
Script-A-pl:
use strict;
use warnings;
use feature ':5.16';
$ENV{NEW_VAR} = 'this is new var';
say "Script-A.pl can read the new var: ", `echo %NEW_VAR%`;
Output: Script-A.pl can read the new var: this is new var
ここで、 から を呼び出し、後でParent.pl
を呼び出す必要があると想像してください。これは、環境変数 に依存します。したがって、これが実行される方法です。Script-A.pl
Script-B.pl
NEW_VAR
Parent.pl:
use strict;
use warnings;
use feature ':5.16';
my @commands = ('perl Script-A.pl', 'perl Script-B.pl');
for my $i (@commands) {
system($i);
}
Script-A.pl
これは、 によって行われた環境変数の変更が では見えないという事実を除いては機能しScript-B.pl
ます。
IPC::Open3 でシェルを開き、そこでコマンドのリストを 1 つずつ実行しても、スクリプトを呼び出すさまざまな方法を試しましたが、それもうまくいきませんでした。
Parent.pl から、これらの変更を後続のシステム コールに表示する方法はありますか?
コメントありがとうございます!
フランシスコ