在Perl中,我有一个用类似于下面的循环创建的散列散列
my %HoH
for my $i (1..10) {
$HoH{$a}{$b} = $i;
}$a和$b是在填充HoH时确实有一些值的变量。创建HoH后,如何检查HoH中是否存在特定的对($c、$d)?以下代码不起作用
if (defined $HoH{$c}{$d}) {...}因为如果HoH中不存在$c,它将被创建为不带值的键。
发布于 2010-12-03 02:34:36
我的观点是:
use List::Util qw<first>;
use Params::Util qw<_HASH>;
sub exists_deep (\[%$]@) {
my $ref = shift;
return unless my $h = _HASH( $ref ) // _HASH( $$ref )
and defined( my $last_key = pop )
;
# Note that this *must* be a hash ref, for anything else to make sense.
return if first { !( $h = _HASH( $h->{ $_ } )) } @_;
return exists $h->{ $last_key };
}您也可以递归地执行此操作。您还可以创建一个下降结构,只需一点额外的编码就可以实现中间甚至是终端arrayref。
https://stackoverflow.com/questions/4336569
复制相似问题