代码之家  ›  专栏  ›  技术社区  ›  Eric Strom

Perl中@array->[4]或%hash->{key}行为的文档在哪里?

  •  4
  • Eric Strom  · 技术社区  · 14 年前

    最近的一个问题使用了sigil不变语法 %hash->{key} = 1;

    它似乎也适用于阵列:

    my @array;
    
    @array->[3] = 6;
    

    这种行为有记录吗?我不记得读过,但可能忽略了。

    它的行为就像:

    (\%hash)->{key}
    

    (scalar %hash)->{key}  # runtime error
    
    1 回复  |  直到 14 年前
        1
  •  8
  •   Eric Strom    14 年前

    似乎这是在帕尔蒙克斯报道的: http://www.perlmonks.org/?node_id=171177

    My reading of perlop has me convinced that this is an unintended
    syntactic feature.
    
    And that's exactly what it is. When using the arrow, Perl will see
    whatever is left of it as a reference. Including if you have something
    like @l or %h.
    
    Note that you will get the warning
    Using an array as a reference is deprecated in Perl 5.8.0.
    
      Abigail