我试图实现一个哈希,它的键“Foo Bar”有一个数组作为它的值。 虽然我尝试将具有此特定键的哈希值分配给数组,但结果数组未按预期工作:
use strict;
use warnings;
use Data::Dumper qw(Dumper);
my %grades;
$grades{'Foo Bar'}[0] = 23;
$grades{'Foo Bar'}[1] = 42;
$grades{'Foo Bar'}[2] = 73;
my @array = $grades{'Foo Bar'};
foreach my $myval ( @array )
{
print $myval;
}
哪里出错?
答案 0 :(得分:3)
哈希值是对数组的引用,是一个标量值。正如您所做的那样将其复制到数组中会产生一个数组,其中一个元素等于数组引用
您需要取消引用该值才能访问引用的数组。您可以像这样直接取消引用它
for my $val ( @{ $grades{'Foo Bar'} } ) {
print $val, "\n";
}
或者您可以先将其复制到标量变量中,正如我在下面的代码中所示
use strict;
use warnings 'all';
my %grades;
$grades{'Foo Bar'}[0] = 23;
$grades{'Foo Bar'}[1] = 42;
$grades{'Foo Bar'}[2] = 73;
my $array = $grades{'Foo Bar'};
for my $val ( @$array ) {
print $val, "\n";
}
23
42
73