41

希望这应该很简单。我初始化一个空数组,执行 grep 并将结果(如果有)放入其中,然后检查它是否为空。像这样:

my @match = ();
@match = grep /$pattern/, @someOtherArray;
if (#match is empty#) {
    #do something!
}

这样做的标准方法是什么?

4

3 回答 3

73

您将看到所有这些用于测试数组是否为空的习语。

if (!@match)
if (@match == 0)
if (scalar @match == 0)

在标量上下文中,数组被评估为其包含的元素数。

于 2012-10-05T18:32:00.733 回答
-1

如果您使用的是 arrayref 而不是数组,例如

my $existing_match = data_layer->find('Sale',{id => $id});

说上面返回一个数组,然后使用:

if( scalar(@$existing_match) == 0) 
于 2017-03-24T16:34:09.460 回答
-3

我也发现这也有效,但我不确定它是否记录在案:

if ($#match == -1)
于 2021-12-16T16:03:36.380 回答