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 に答える