Perl 使用哈希访问哈希
我有这道菜 我只想迭代“0”的值Perl 使用哈希访问哈希,perl,hash,Perl,Hash,我有这道菜 我只想迭代“0”的值 $VAR1 = { '1' => { '192.168.1.1' => '192.168.1.38' }, '0' => { '192.168.32.6' => '192.168.32.43' } }; 我访问它的唯一方法是为每个$key(key(%myhash))创建两个循环: 我可以使用: foreach my $key (keys(%myhash{0})) ## does not work 或者
$VAR1 = {
'1' => {
'192.168.1.1' => '192.168.1.38'
},
'0' => {
'192.168.32.6' => '192.168.32.43'
}
};
我访问它的唯一方法是为每个$key(key(%myhash))创建两个循环:
我可以使用:
foreach my $key (keys(%myhash{0})) ## does not work
或者以某种方式直接访问这些值
首先,如果使用连续整数作为散列的键,那么很可能应该使用数组
与键0
相对应的散列值是$dhcps{0}
,因为它是标量值<代码>%dhcpoffers{0}
只是一个语法错误
你需要
for my $key (keys %{ $dhcpoffers{0} }) { ... }
或者,如果你愿意的话
my $offer_0 = $dhcpoffers{0};
for my $key (keys %$offer_0) { ... }
由于Perl 5的第14版,键将接受哈希引用,因此您可以编写更干净的
for my $key (keys $dhcpoffers{0}) { ... }
您是否已阅读并?是否可以插入您所使用的嵌套(?)foreach
循环的代码?这将有助于说明和对比这里讨论的两种不同的访问方法:即5.14
和更高版本可以直接引用,而早期版本需要解引用步骤(因此需要双循环)。酷!虽然我有5.16.3版本,但我无法得到键
来按你说的做。你能稍微扩展/改进你的答案来说明吗?@G.Cito:对不起,我的最后一行代码中有一个输入错误。现在就试试。谢谢。事实证明,大约5分钟前我自己就明白了这一点,并打算发表评论:——)+1票赞成你的快速反应!