使用哈希,为什么以下两者都有效?
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}
答案 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}} 下标,那么左侧必须是硬的或象征性的 分别引用数组,散列或子例程。 (要么 从技术上讲,一个能够持有硬参考的位置, 如果它是用于赋值的数组或散列引用。)