使用any来检查哈希中数组中元素的存在

时间:2016-12-14 15:04:24

标签: arrays perl hash

我正在尝试使用any检查哈希的元素(数组)是否包含特定项目。因为我的数组可能变得非常大,所以any似乎是最有效的方式,因为一旦找到该项,它就会返回true。问题是CLI返回:

  

arg 1到List :: Util :: any的类型必须是block或sub {}(不是数组   dereference)at ...

以下转载的行(改为虚构示例)。我想在下面的虚构示例中查看id的{​​{1}}是否在item2 field内。

item1

我做错了什么?由于anyunless(any(@{$hash{$item1}{field}}) eq $hash{$item2}{id}) { # Do magic. } 的一部分,我已将该模块加载到顶部。

List::Util

1 个答案:

答案 0 :(得分:3)

您需要导入该功能:

use List::Util qw(any);

更新:如上所述,any的第一个arg应该是一个代码块。在这种情况下,将哈希值与$ _进行比较,该值分配给数组中的每个值,直到条件为真。

unless(any { $_ eq $hash{$item2}{id} } @{$hash{$item1}{field}}) {