【发布时间】:2016-12-14 15:04:23
【问题描述】:
我正在尝试使用any 检查哈希的元素(数组)是否包含特定项目。因为我的数组可能会变得非常大,所以any 似乎是最有效的方法,因为一旦找到该项目,它就会返回 true。问题是 CLI 返回:
参数 1 到 List::Util::any 的类型必须是块或子 {}(不是数组 取消引用)在...
该行(更改为虚构示例)转载如下。在下面的虚构示例中,我试图查看item2 的id 是否在item1 的field 内。
unless(any(@{$hash{$item1}{field}}) eq $hash{$item2}{id}) {
# Do magic.
}
我做错了什么?由于any 是List::Util 的一部分,因此我已在顶部加载了该模块。
use List::Util qw(any);
【问题讨论】:
-
多大才算非常大? any 比 grep 慢得多。你真的计算过 grep 需要多长时间吗?
-
@ysth 金额可以跑到几十万。
-
@AdamMillerchip:你为什么删除你的答案?我觉得很好。
-
@BramVanroy 以及您希望找到所需元素的时间百分比是多少?
-
@ysth 这很难说,因为我正在处理语言数据。我假设您正在了解以下内容,如果我不希望经常找到结果,那么 grep 会更快,因为必须以任何方式查看整个数组?