谁能告诉我这是什么@{hash{$key}}
意思?我写的时候是否正确@{hash{$key}}[$i]=$list[$i+1]
?
问问题
1035 次
2 回答
7
@{hash{$key}}
是一种奇怪的写作方式
@hash{$key}
这称为哈希片。它允许您一次从哈希中获取多个值。例如,
say for @hash{'a', 'b'};
方法
say for $hash{a}, $hash{b};
所以使用起来相当愚蠢
@hash{$key}
代替
$hash{$key}
@{hash{$key}}[$i]=$list[$i+1];
不编译,所以不,使用它是不正确的。
于 2013-03-20T07:51:38.413 回答
4
正如 ikegami 解释的那样,@{hash{$key}}
是一个散列片(只有一个元素)。
您可能想要这个:@{$hash{$key}}
. 如果散列的每个元素都是数组引用,则此语法将允许您访问该数组。
例如,假设您的哈希包含数组,如下所示:
my %hash = (
foo => [1, 2, 3, 4, 5],
bar => [qw/baz sproing blargh/]
);
@{$hash{foo}}
将会(1, 2, 3, 4, 5)
如果是这种情况,那么此语法将起作用:
${$hash{$key}}[$i]=$list[$i+1]
请注意,您只访问数组的一个元素,而不是整个数组。因此,您使用${$hash{$key}}
而不是@{$hash{$key}}
.
另一种做同样事情的方法是:
$hash{$key}->[$i]=$list[$i+1]
取消引用的->
语法通常比 . 更可取${...}
,因为它更简洁,尤其是当您拥有复杂的数据结构时。
于 2013-03-20T09:11:24.373 回答