Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 修复在嵌套哈希上调用exist时出现的键_Perl_Hash_Key_Exists - Fatal编程技术网

Perl 修复在嵌套哈希上调用exist时出现的键

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使用的库是否存在或如何编辑,或者是否可以使用模块对此进行更正

亲爱的飞越者:

当调用散列上的exist来测试嵌套在不存在的散列中的键的存在性时,它将创建导致最终测试的键,以查看最终键是否存在

perldoc的例子如下:

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
    执行相同的操作。