我使用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