使用PerlXML::Simple访问xml数据

使用PerlXML::Simple访问xml数据,perl,Perl,我有一些xml数据,转储如下所示: $VAR1 = { 'Members' => [ { 'Age' => '19', 'Name' => 'Bob' }, { 'Ag

我有一些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”)用作哈希引用


你知道为什么这行不通吗?

你使用了错误的语法

#                   here ...   and here
#                    V               V
foreach my $member (@($xml->{Members})) { ... }
要取消引用,需要大括号
{}
,而不是括号
()

一旦您修复了该问题(我认为这是问题中的一个输入错误,而不是在您的实际代码中),您将:

foreach my $member ( @{ $xml->{Members} } ) {
    print "Age: $xml->{Age}";
}
但这仍然是错误的。您想访问
$member
,而不是整个
$xml
结构,因为它没有
年龄,不是吗

foreach my $member ( @{ $xml->{Members} } ) {
    print "Age: $member->{Age}\n";
}
那会给你

Age: 19
Age: 18
Age: 21
Age: 22

您使用了错误的语法

#                   here ...   and here
#                    V               V
foreach my $member (@($xml->{Members})) { ... }
要取消引用,需要大括号
{}
,而不是括号
()

一旦您修复了该问题(我认为这是问题中的一个输入错误,而不是在您的实际代码中),您将:

foreach my $member ( @{ $xml->{Members} } ) {
    print "Age: $xml->{Age}";
}
但这仍然是错误的。您想访问
$member
,而不是整个
$xml
结构,因为它没有
年龄,不是吗

foreach my $member ( @{ $xml->{Members} } ) {
    print "Age: $member->{Age}\n";
}
那会给你

Age: 19
Age: 18
Age: 21
Age: 22

以防万一,你还没有被这句话打倒:我不知道你在这里抄写代码时的打字错误是什么。这不是生成此错误消息的代码。我也不能复制它。无论如何,正确的语法是非常清楚的。以防万一你还没有被这句话打倒:我不知道你在这里抄写代码时的拼写错误是什么。这不是生成此错误消息的代码。我也不能复制它。无论如何,正确的语法非常清楚。