我有一些xml数据,转储看起来像这样:
$VAR1 = {
'Members' => [
{
'Age' => '19',
'Name' => 'Bob'
},
{
'Age' => '18',
'Name' => 'Jane'
},
{
'Age' => '21',
'Name' => 'Pat'
},
{
'Age' => '22',
'Name' => 'June'
}
],
'Sports' => [
{
'Players' => '20',
'Name' => 'Tennis'
},
{
'Players' => '35',
'Name' => 'Basketball'
}
],
};
我已尝试使用以下代码打印出数据:
foreach my $member (@($xml->{Members})) {
print("Age: $xml->{Age}");
}
但不断收到错误:
不能使用字符串(" 4")作为HASH参考,而#34; strict refs"在使用中
知道为什么这不起作用?
答案 0 :(得分:4)
您使用的语法错误。
# here ... and here
# V V
foreach my $member (@($xml->{Members})) { ... }
要取消引用,您需要大括号{}
,而不是括号()
。
一旦你解决了这个问题(我认为这是问题中的拼写错误,而不是真正的代码),你有:
foreach my $member ( @{ $xml->{Members} } ) {
print "Age: $xml->{Age}";
}
但那还是错的。您想要访问$member
,而不是整个$xml
结构,因为它没有Age
,是吗?
foreach my $member ( @{ $xml->{Members} } ) {
print "Age: $member->{Age}\n";
}
那会给你
Age: 19
Age: 18
Age: 21
Age: 22