你需要使用 - >什么时候引用哈希?

时间:2017-01-04 23:01:01

标签: perl hash reference

使用哈希,为什么以下两者都有效?

  • index Target Weight 0 a A 1.0 1 b A 4.0 2 c A 9.0 3 a B 3.0 4 b B 0.0 5 c B 8.0 ...
  • $hash{elem}

1 个答案:

答案 0 :(得分:9)

他们不“兼得”。前者用于访问哈希的元素,后者用于访问哈希引用的元素

Global symbol "$hash" requires explicit package name (did you forget to declare "my $hash"?) at 41474678.pl line 8.
Execution of 41474678.pl aborted due to compilation errors.

输出:

my $href = {one => 1};

say $href->{one};
say $href{one};

如果您尝试使用散列引用(如散列),则反向发生相同的错误:

Global symbol "%href" requires explicit package name (did you forget to declare "my %href"?) at 41474678.pl line 8.
Execution of 41474678.pl aborted due to compilation errors.

输出:

->

来自SeqFactory中的“箭头操作员”:

  

[...]”是一个中缀解除引用运算符,就像在C和C ++中一样。   如果右侧是{...}(...)或{{1}}   下标,那么左侧必须是硬的或象征性的   分别引用数组,散列或子例程。 (要么   从技术上讲,一个能够持有硬参考的位置,   如果它是用于赋值的数组或散列引用。)