gpt4 book ai didi

windows - 为什么 Perl 的 %ENV 具有空字符串值的键不显示 Windows 子进程?

转载 作者:可可西里 更新时间:2023-11-01 14:42:20 26 4
gpt4 key购买 nike

我想(需要)从检查某些环境变量的 perl 脚本启动一个子进程。在一种情况下,环境变量需要存在但为空。

 $ENV{"GREETING"} = "Hello World";        # Valid
$ENV{"GREETING"} = ""; # also valid

我可以设置 $ENV{"GREETING"} = "";并且在该 perl 脚本中 $ENV{"GREETING"} 是空的,但在任何子进程中该环境变量都不存在。

这里是一些示例代码来演示。这个脚本env_in.pl设置了一些环境变量,ZZZ_3为空。然后它调用 env_out.pl 输出环境变量,输出中缺少 ZZZ_3。

#!/usr/bin/perl
# env_in.pl

use strict;`enter code here`
use warnings;

$ENV{ZZZ_1} = "One";
$ENV{ZZZ_2} = "Two";
$ENV{ZZZ_3} = "";
$ENV{ZZZ_4} = "Four";

my (@cmd) = ("perl", "env_out.pl");
system(@cmd) == 0 or die "system @cmd failed: $?";

这是 env_out.pl 脚本。

#!/usr/bin/perl

use strict;
use warnings;

print ($_," = ", $ENV{$_}, "\n") for (sort keys %ENV);

我在 WinXP 机器上使用 ActiveState perl 版本 v5.8.8。

我知道这在 python 中确实有效,但我无法选择实现语言,它必须是 Perl。

最佳答案

据我所知,Windows 中没有空环境变量这样的东西。将它们定义为空与取消定义它们是一回事。

当在类 Unix 系统上运行时,您的 Perl 脚本确实会显示 ZZZ_3 条目。

关于windows - 为什么 Perl 的 %ENV 具有空字符串值的键不显示 Windows 子进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1326859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com