我从这段代码中得到了一个数据结构。
my $name = $data->{Instances}->[0]->{Tags};
该数据结构如下所示
$VAR1 = [
{
'Key' => 'Name',
'Value' => 'fl-demo'
},
{
'Value' => 'FL',
'Key' => 'state'
}
];
我尝试用这个打印键和值
foreach my $key (sort keys %$name) {
my $value = $name->{$key};
print "$key => $value\n";
}
我越来越
Not a HASH reference at ./x.pl line 19.
3条答案
按热度按时间uwopmtnx1#
标签以数组的形式返回,而不是散列。因此,您需要执行类似下面的操作,以迭代它们:
b4qexyjb2#
变量
$name
的数据结构转储表明您有数组引用。您可以使用循环输出感兴趣的数据,不要忘记取消引用
$name
变量。输出量
tv6aics13#
详细说明之前的答案:
$name
是对包含哈希引用的数组的引用。@$name
* 和 *@{$name}
(对等表示法) 指涉$name
所指涉的数组。${$name}[0]
* 和 *$name->[0]
(等效表示) 引用由$name
引用的数组中的第一个散列。${$name}[0]{'Key'}
、$name->[0]->{'Key'}
等 (等价表示) 指的是$name
所引用的数组中的第一散列中的'Key'
的散列值。因此,下面的代码将遍历所有数组和哈希元素: