我使用XMLin在一个XML文件中读取,这让我这个......寻找一个Perl哈希值
'Date' => '01Jan2013',
'Total' => 3,
'Details' => {
'Detail' => [
{
'Name' => 'Bill',
'ID' => '123',
'IP' => '255.255.255.1'
},
{
'Name' => 'Ted',
'ID' => '456',
'IP' => '255.255.255.2'
},
{
'Name' => 'Fred',
'ID' => '789',
'IP' => '255.255.255.3'
},
]
}
我试图搜索{}详细[名称]值一个特定的名字。所以我想搜索Fred来获取他的名字和IP地址。
foreach my $ruleline ($pricesettings->{Details}{Detail}['Name']){
if ($pricesettings->{Details}{Detail}["Name"] eq "Fred") {
print "Found you\n";
}
else {
print "Not found\n";
}
}
但是即使我打印自卸车($ pricesettings - > {详细} {}细节[ '名称'])中的for循环只打印第一个记录条目比尔。
理想我想看到像
Name => 'Bill'<br>
Name => 'Ted'<br>
Name => 'Fred'<br>
然后输出,如果弗雷德发现我希望得到弗雷德的IP地址或ID。例如,我没有发现或比较'Date'或'Total'的值的问题,但是在'Detail'下的每个分组都会造成我的问题。
这是因为数组通过数字索引,“Name”被视为零。 –
看起来您正在使用'XML :: Simple-> XMLin()',在这种情况下,升级到更好的XML模块可能是个好主意,例如['XML :: LibXML'] (http://search.cpan.org/perldoc?XML%3A%3ALibXML) – TLP