我正在尝试使用any
检查哈希的元素(数组)是否包含特定项目。因为我的数组可能变得非常大,所以any
似乎是最有效的方式,因为一旦找到该项,它就会返回true。问题是CLI返回:
arg 1到List :: Util :: any的类型必须是block或sub {}(不是数组 dereference)at ...
以下转载的行(改为虚构示例)。我想在下面的虚构示例中查看id
的{{1}}是否在item2
field
内。
item1
我做错了什么?由于any
是unless(any(@{$hash{$item1}{field}}) eq $hash{$item2}{id}) {
# Do magic.
}
的一部分,我已将该模块加载到顶部。
List::Util
答案 0 :(得分:3)
您需要导入该功能:
use List::Util qw(any);
更新:如上所述,any
的第一个arg应该是一个代码块。在这种情况下,将哈希值与$ _进行比较,该值分配给数组中的每个值,直到条件为真。
unless(any { $_ eq $hash{$item2}{id} } @{$hash{$item1}{field}}) {