gpt4 book ai didi

perl - 为什么我的 Perl 程序会警告未初始化的值?

转载 作者:行者123 更新时间:2023-12-01 11:32:46 27 4
gpt4 key购买 nike

我在下面编写了生成警告的 Perl 脚本,但我无法弄清楚原因。

#!/usr/local/bin/perl -w

$status = $ENV{ 'STATUS' };
if ( $status eq "" )
{
$status = 0;
}
else
{
$status = 1;
}

它说“在 ./x.pl 第 4 行的字符串 eq 中使用未初始化的值。

第 4 行是“if ( $status eq "")”行,但变量已初始化...

我怎样才能摆脱这个警告?

最佳答案

另一种选择是

$status = $ENV{ 'STATUS' } // '';

如果 $status 未定义,它将设置为空字符串,但 // 运算符仅存在于 perl 5.10 及更高版本中。等效的 pre-5.10 语法是

$status = defined $ENV{STATUS} ? $ENV{STATUS} : '';

虽然很多人会伪造它

$status = $ENV{ 'STATUS' } || '';

但这会将 0 的 $ENV{STATUS} 更改为空字符串,这对您来说可能是也可能不是问题。

但是,这些都是一般情况下的答案。在您发布的特定代码中,将整个代码替换为

$status = defined $ENV{STATUS} ? 1 : 0;

甚至只是

$status = defined $ENV{STATUS};

(如果您同意“未设置”值是空字符串而不是 0)将是更好的选择。

关于perl - 为什么我的 Perl 程序会警告未初始化的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2250632/

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