Perl 修复在嵌套哈希上调用exist时出现的键
亲爱的飞越者: 当调用散列上的exist来测试嵌套在不存在的散列中的键的存在性时,它将创建导致最终测试的键,以查看最终键是否存在 perldoc的例子如下:Perl 修复在嵌套哈希上调用exist时出现的键,perl,hash,key,exists,Perl,Hash,Key,Exists,亲爱的飞越者: 当调用散列上的exist来测试嵌套在不存在的散列中的键的存在性时,它将创建导致最终测试的键,以查看最终键是否存在 perldoc的例子如下: undef $ref; if (exists $ref->{"Some key"}) {} print $ref; # prints HASH(0x80d3d5c) 我绝对喜欢perl的自动感应特性;然而,我现在绝对害怕在将来的项目中使用exists 是否有人知道perl使用的库是否存在或如何编辑,或者是否可以使用模块对此进行更正
undef $ref;
if (exists $ref->{"Some key"}) {}
print $ref; # prints HASH(0x80d3d5c)
我绝对喜欢perl的自动感应特性;然而,我现在绝对害怕在将来的项目中使用exists
是否有人知道perl使用的库是否存在或如何编辑,或者是否可以使用模块对此进行更正?如果它不存在,它会让人去看未来的钥匙是否会存在,这真是愚蠢
最后,从中的以下问题中学习,建议使用一种用于深度嵌套哈希的OO样式。对于在这些嵌套哈希中存储非常简单的浮点值的深度嵌套(>n=10)和高内存(>8GB)是否会有任何技术问题?还是像这样的问题?试试:
perldoc-q-multively
或者试试:
perldoc-q多级
或者取消未定义变量的引用[1]是导致自生的原因[2]。取消引用的示例:
和$ref->{key}
${$ref}{key}
和$ref->[0]
${$ref}[0]
$$ref
@$ref
- 等等
exists( $ref->{"Some key"} )
与
或加入
no autovivification;
$x=1;
)、哈希元素(my%h;$h{$key}=1;
)和数组元素(my@a;$a[3]=1;
)。这篇文章没有提到这些,因为它与这里无关解引用未定义的变量[1]是导致自生的原因[2]。取消引用的示例:
和$ref->{key}
${$ref}{key}
和$ref->[0]
${$ref}[0]
$$ref
@$ref
- 等等
exists( $ref->{"Some key"} )
与
或加入
no autovivification;
$x=1;
)、哈希元素(my%h;$h{$key}=1;
)和数组元素(my@a;$a[3]=1;
)。这篇文章没有提到这些,因为它与这里无关no autovivification;
到模块的顶部。这将阻止autovivification创建到测试点的结构。您应该添加
no autovivification;
到模块的顶部。这将阻止autovivification创建下至测试点的结构。请注意,
defined
执行相同的操作。请注意,defined
执行相同的操作。