考虑以下 HoH:
$h = {
a => {
1 => x
},
b => {
2 => y
},
...
}
有没有办法在不调用的情况下检查第二个嵌套级别上是否存在哈希键keys(%$h)
?例如,我想说的是:
if ( exists($h->{*}->{1}) ) { ...
(我意识到你不能*
用作哈希键通配符,但你明白了......)
我试图避免使用keys()
,因为它会重置哈希迭代器,并且我正在$h
使用以下循环进行迭代:
while ( (my ($key, $value) = each %$h) ) {
...
}
我能找到的最接近的语言结构是这里提到的智能匹配运算符 ( ~~
)(在 perlref perldoc 中没有提到),但即使~~
在 Perl 版本中可用,我也只能使用 (5.8.4),从什么我可以说它在这种情况下不起作用。
如果无法完成,我想我会在进入while
循环之前将键复制到数组或散列中(这是我开始的方式),但我希望避免开销。