我正在运行来自 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
,我需要调用from ,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 打开一个 shell 并在那里一个一个地运行命令列表,但这也不起作用。
有没有办法可以从 Parent.pl 使这些更改对后续系统调用可见?
感谢您的评论!
弗朗西斯科