Perl访问数组哈希中的元素

时间:2014-02-18 21:14:45

标签: arrays perl

我正在尝试访问哈希数组的元素。

这是我的变量$tst

的转储
[
  { DESCRIPTION => "Default", ID => 0, NAME => "Default",  VERSION => "1.0" },
  { DESCRIPTION => "",        ID => 1, NAME => "Custom 1", VERSION => "1.1" },
  { DESCRIPTION => "",        ID => 2, NAME => "Custom 2", VERSION => "1.0" },
  { DESCRIPTION => "",        ID => 3, NAME => "Custom 3", VERSION => "6.0" },
  { DESCRIPTION => "",        ID => 4, NAME => "Custom 4", VERSION => "1.0" },
]

我正在尝试访问元素的值。例如,如果ID为4,则返回字段NAME

我尝试打印ID的所有值,但它没有正常工作。

我在线查看了以下Perl代码的变体

foreach ($tst) {
  print "$_->{'ID'}, \n";
}

它会出现以下错误:

Not a HASH reference at file.pl line 22.

注意:第22行是上面的print行。

2 个答案:

答案 0 :(得分:4)

首先必须取消引用哈希数组。所以,

foreach (@$tst) {
    print $_->{ID}, "\n";
}

应该打印所有ID。

答案 1 :(得分:3)

您接受的答案是正确的,但您的数据结构是可以通过ID值索引数组。也就是说所有元素都是$tst->[$id]{ID} == $id

因此,要打印NAME 4的ID字段,您可以说

print $tst->[4]{NAME}, "\n";

你会看到

Custom 4

我希望这会有所帮助。