首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Perl,检查散列的哈希中是否存在对

Perl,检查散列的哈希中是否存在对
EN

Stack Overflow用户
提问于 2010-12-02 23:23:56
回答 5查看 8.9K关注 0票数 1

在Perl中,我有一个用类似于下面的循环创建的散列散列

代码语言:javascript
运行
复制
    my %HoH
    for my $i (1..10) {
      $HoH{$a}{$b} = $i; 
    }

$a和$b是在填充HoH时确实有一些值的变量。创建HoH后,如何检查HoH中是否存在特定的对($c、$d)?以下代码不起作用

代码语言:javascript
运行
复制
if (defined $HoH{$c}{$d}) {...}

因为如果HoH中不存在$c,它将被创建为不带值的键。

EN

Stack Overflow用户

发布于 2010-12-03 02:34:36

我的观点是:

代码语言:javascript
运行
复制
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。

票数 0
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4336569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档