Perl:查找另一个散列中的一个散列的第一个散列键

时间:2016-05-03 16:55:27

标签: perl hash

我写了这个简单的子版,它的作品已售罄:

sub search_dispatch_table
{
    my ($href1, $href2) = @_;

    foreach my $key (keys %$href1)
    {
        return $key if exists $href2->{$key};
    }
    return undef;
}

我只想返回href1中存在的href2的第一个键。

有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

您没有指定您希望用来评估哪种解决方案更好的标准。

假设您的意思更快",您可以使用each代替keys加速最佳情况,但这是关于它的。

sub search_dispatch_table {
    my ($href1, $href2) = @_;

    while (my ($key) = each(%$href1)) {
        if (exists($href2->{$key})) {
           keys(%$href1);  # Reset iterator.
           return $key;
        }
    }

    return undef;
}