XML ファイルを解析しようとしています。Xml ファイルは、@ http://pastebin.com/fvuwbrh9にあります。この xml ファイルを として保存しましpackages.xml
た。
目標<packagereq>
: XML 内のタグで囲まれたすべての名前を一覧表示します (ダンパー出力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}
上記のエラーにより、 のどこかの値がARRAY 参照ではないと思われます。
XMLファイル(またはDumper出力)をできる限り注意深く調べましたがpackagereq
、もちろん何かを見落としていない限り、常にARRAY参照を指していることがわかりましたが、そうは思えません。
について不平を言っている理由について、いくつかの情報を提供していただけますかNot an ARRAY ref
。
ありがとう。