Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一些遗留的 perl 脚本,它设置环境变量
$ENV{"ENV_VAR_NAME"} = $envVar;
然后使用 qx() 执行另一个 shell 命令
$command = "$xyz"; $result = qx($command);
当 qx 执行新命令时,修改后的 ENV_VAR_NAME 是否可用。
是的。
perlvar说%ENV:
perlvar
%ENV
在 ENV 中设置一个值会更改您随后 fork() 关闭的任何子进程的环境。
并且qx确实产生了一个子进程,因此可以访问您修改的环境变量。
qx
这可以很容易地测试:
print "1: ", qx(echo \$X); # Prints "1: " $ENV{X} = 42; print "2: ", qx(echo \$X); # Prints "2: 42"