gpt4 book ai didi

Perl - 数组 : Key look-up by Value 的散列

转载 作者:行者123 更新时间:2023-12-02 22:09:23 24 4
gpt4 key购买 nike

我有一个数组哈希 (HoA)。我一直在使用 $arrayrefs 处理这个 HoA 的值。但是,现在我需要根据 $arrayrefs 检索 $key

my %a =  ( 1 => "ONE" , 
2 => "TWO" ,
3 => " Three", );

my %aa = ( 4 => [ 'ONE' , 'TWO', 'THREE'],
5 => ['one' , 'two', 'three'],
6 => ['more', 'dos', 'some'],
);

my @array = ('ONE' , 'TWO', 'THREE');
my $array_ref = \@array;

# returns the $key where the $value is 'ONE'
my ($any_match) = grep { $a{$_} eq 'ONE' } keys %a;
print $any_match."\n"; # this returns '1', as expected.. Good!

my ($match) = grep { $aa{$_} eq @$array_ref } keys %aa;
print $match."\n"; # <--- error: says that match is uninitialized

在最后一个 print 语句中,我希望它返回 4。有谁知道该怎么做吗?

最佳答案

您不能将数组与 eq 进行比较。一个简单的解决方案是将两个数组都转换为字符串并使用 eq 比较字符串:

my ($match) = grep { join("", @{$aa{$_}}) eq join("", @$array_ref) } keys %aa;

为了比较数组,您还可以使用 CPAN 中的众多模块之一,例如Array::Compare , List::Compare

关于Perl - 数组 : Key look-up by Value 的散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15584079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com