gpt4 book ai didi

perl - 在Perl中,未初始化的哈希键的默认值为零吗?

转载 作者:行者123 更新时间:2023-12-04 04:44:58 25 4
gpt4 key购买 nike

我有类似于以下内容的Perl代码:

# -- start --

my $res;

# run query to fetch IPv6 resources
while( my $row = $org_ip6_res->fetchrow_arrayref )
{
if( $row->[4] =~ /PA/ ) {
$res->{ipv6}{pa}{$row->[2]}++;
} elsif( $row->[4] eq 'PI' ) {
$res->{ipv6}{pi}{$row->[2]}++;
}
}

# -- stop --

在遍历查询结果之前,永远不会设置 $res,但是代码可以正常运行。

当我将打印语句放在每个值之前时,在两种情况下我都会空白,但是如果打印语句在应用增量之后出现,则我会得到大于等于1的值,这取决于组织拥有多少IPv6资源。

我的问题是,这是否意味着Perl中未初始化的哈希键自动具有零值?

抱歉,如果它是一个新手问题,但我对这种结构不熟悉
$hashref->{foo}->{bar}++尚未将值明确分配给 $hashref->{foo}->{bar}的地方。提前致谢!

最佳答案

该值不会自动为零。该值最初是未定义的。但是,如果您将其视为数字(例如,对其应用++),则Perl会将其视为零。如果您将其视为字符串(例如,将.应用于字符串),则Perl会将其视为空字符串。

perldoc perlsyn的“声明”下:

The only things you need to declare in Perl are report formats and subroutines (and sometimes not even subroutines). A variable holds the undefined value ("undef") until it has been assigned a defined value, which is anything other than "undef". When used as a number, "undef" is treated as 0; when used as a string, it is treated as the empty string, ""; and when used as a reference that isn’t being assigned to, it is treated as an error.

关于perl - 在Perl中,未初始化的哈希键的默认值为零吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/811515/

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