Arrays Perl如何检查数组是否仍然为空?

Arrays Perl如何检查数组是否仍然为空?,arrays,perl,Arrays,Perl,希望这应该很简单。我初始化一个空数组,执行grep并将结果(如果有)放入其中,然后检查它是否为空。像这样: my @match = (); @match = grep /$pattern/, @someOtherArray; if (#match is empty#) { #do something! } 这样做的标准方式是什么 您将看到所有这些用于测试数组是否为空的习惯用法 if (!@match) if (@match == 0) if (scalar @match == 0)

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

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

这样做的标准方式是什么

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

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

在标量上下文中,数组按其包含的元素数计算。

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

$my existing_match = data_layer->find('Sale',{id => $id});
如上所述返回一个数组,然后使用:

if( scalar(@$existing_match) == 0) 

不要忘记
,除非(@match)
。(但这只是,就像,我的观点,伙计)这些反过来也是真的吗?如果您想控制至少存在一个元素时的行为,我假设它是
If(@match)
If(@match!=0)
,但我想我应该检查您是否可以在同一行上定义和初始化@match-
my@match=grep等。