Perl 访问数组散列中的元素

Cir*_*B0T 0 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" },
]
Run Code Online (Sandbox Code Playgroud)

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

我尝试打印所有的值,ID但没有成功。

我使用了下面从网上查看的 Perl 代码的变体

foreach ($tst) {
  print "$_->{'ID'}, \n";
}
Run Code Online (Sandbox Code Playgroud)

它给出了以下错误:

Not a HASH reference at file.pl line 22.
Run Code Online (Sandbox Code Playgroud)

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

Nig*_*oJr 5

您首先必须取消引用散列数组。所以,

foreach (@$tst) {
    print $_->{ID}, "\n";
}
Run Code Online (Sandbox Code Playgroud)

应该打印所有的ID。