我正在尝试解析 XML 文件。Xml 文件可以在@http://pastebin.com/fvuwbrh9找到。我已将此 xml 文件保存为packages.xml
.
目标:列出所有在 XML 中被<packagereq>
标记包围的名称(我指的是在转储器输出中packagereq
属于的名称)。group
我写了下面的脚本称为rpm.pl
:
#!/usr/bin/perl -w
use strict;
use XML::Simple;
use Data::Dumper;
my $ref = XMLin ('packages.xml');
#print Dumper ($ref);
foreach my $a ( keys %{ $ref->{group} } )
{
if ( exists $ref->{group}->{$a}->{packagelist} )
{
foreach my $b ( @{ $ref->{group}->{$a}->{packagelist}->{packagereq} } )
{
print $b->{content}."\n"; ### <<< referring the Dumper out put
}
}
}
现在我的脚本进行了一半并打印了包名称,但随后它因以下错误而终止:
Not an ARRAY reference at rpm.pl line 29.
出现上述错误后,脚本不会处理 XML 文件的其余部分并终止。
上面的错误让我相信某处的值$ref->{group}->{$a}->{packagelist}->{packagereq}
不是一个数组引用。
我已经尽可能小心地通过 XML 文件(或 Dumper 输出),但发现它packagereq
总是指向一个 ARRAY 引用,除非我当然忽略了某些东西,但我对此表示怀疑。
你能否提供一些关于它为什么抱怨的意见Not an ARRAY ref
。
谢谢。