我正在尝试访问存储在 Perl 数组中的哈希的每个成员。我已经看到循环遍历 Perl 中的哈希数组,我需要一种更好的方法来访问它们。我的最终结果是将每个项目(哈希)拆分为一个数组,将该哈希的键存储在一个新数组中,将该数组的值存储在另一个数组中。
编辑:我改变了他们获取数据的方式,以更好地反映我的代码。我不认为这很重要,但确实如此。
XML 源:
<XML>
<computer>
<network>
<interface1>
<name>eht0</name>
<ip>182.32.14.52</ip>
</interface1>
<interface2>
<name>eth2</name>
<ip>123.234.13.41</ip>
</interface2>
</network>
</computer>
</xml>
PERL 代码:
my %interfaceHash;
for(my $i=0; $i < $numOfInterfaces; $i++ ){
my $interfaceNodes = $xmldoc->findnodes('//computer/network/interface'.($i+1).'/*');
foreach my $inode ($interfaceNodes->get_nodelist){
my $inetValue = $inode->textContent();
if ($inetValue){
my $inetField = $inode->localname;
push (@net_int_fields, $inetField);
push (@net_int_values, $inetValue);
}
}
for(my $i =0; $i< ($#net_int_fields); $i++){
$net_int_hash{"$net_int_fields[$i]"} = "$net_int_values[$i]";
}
push (@networkInterfaces, \%net_int_hash); #stores
}
现在,如果我尝试访问该数组,它会清除散列中存储的内容。