【发布时间】:2016-12-24 08:46:06
【问题描述】:
我在 Perl 中有这种数组:
my $foo_bar;
$foo_bar->{"foo"} //= [];
push @{$foo_bar->{"foo"}}, "foo1";
push @{$foo_bar->{"foo"}}, "foo2";
push @{$foo_bar->{"foo"}}, "foo3";
$foo_bar->{"bar"} //= [];
push @{$foo_bar->{"bar"}}, "bar1";
push @{$foo_bar->{"bar"}}, "bar2";
push @{$foo_bar->{"bar"}}, "bar3";
我想要得到的结果是:
- foo: foo1, foo2, foo3
- bar: bar1, bar2, bar3
我不知道..我正在尝试这个:
foreach my $fb(@$foo_bar){
}
我收到一个错误:
./test.pl 第 417 行第 1000 行不是 ARRAY 引用。
【问题讨论】:
-
第1000行是哪一个?
-
$foo_bar是 hashref,而不是 arrayref -
这是一个好问题.. 脚本中没有 1000 行。 417行是:
foreach my $fb(@$foo_bar){ -
啊,我没有看到 417。这可能是因为你有一个打开的文件句柄。如果是这样,请不要使用全局文件句柄 (
INFILE)。请改用词法文件句柄 ($fh)。 -
不需要
$foo_bar->{"foo"} //= [];行。 Perl 在需要时(有时在不需要时)自动激活结构。
标签: arrays perl multidimensional-array hash