perl 脚本中是否通过 qx 保留了环境变量

Are environment variables preserved through qx in a perl script

我有一些遗留的 perl 脚本,它设置了环境变量

$ENV{"ENV_VAR_NAME"} = $envVar;

然后使用 qx() 执行另一个 shell 命令

$command = "$xyz";
$result = qx($command);

修改后的ENV_VAR_NAME何时可用 qx 执行新命令。

是的。

perlvar%ENV:

Setting a value in ENV changes the environment for any child processes you subsequently fork() off.

并且 qx 确实生成了一个子进程,因此可以访问您修改的环境变量。

这很容易测试:

print "1: ", qx(echo $X); # Prints "1: "

$ENV{X} = 42;

print "2: ", qx(echo $X); # Prints "2: 42"