如何解决Perl脚本中system设置的环境变量无法在当前上下文生效问题
Perl脚本环境变量传递问题的解决办法
你用system("set WALLET=NO")的方式根本没法让Perl主进程拿到这个环境变量——因为system会启动独立子进程,子进程里的环境变量修改完全不会影响父进程(也就是你的Perl脚本本身)。
正确的做法是直接操作Perl内置的%ENV哈希表,这是Perl进程维护的环境变量集合,修改后当前脚本上下文和后续启动的子进程都能读取到:
$ENV{WALLET} = 'NO'; # 这里执行依赖WALLET=NO的Perl代码 do some perl commands;
如果只是需要给某一条system启动的外部命令单独设置环境变量,也可以在调用时临时指定:
Windows系统下:
# 仅给该system调用的子进程设置环境变量 system('cmd', '/c', 'your_target_command', { WALLET => 'NO' });
Unix/Linux/macOS系统下:
# 临时给子进程注入环境变量后执行命令 system('WALLET=NO your_target_command');
内容的提问来源于stack exchange,提问作者IGOR LEVKOVSKY
相关产品推荐
相关产品推荐

