作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个数组哈希 (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/
我是一名优秀的程序员,十分优秀!