2012-10-05 3 views
24

これはうまくいけば簡単です。空の配列を初期化し、grepを実行して結果があればそれを置き、それが空であるかどうかを確認します。同様に:Perlアレイがまだ空であるかどうかをチェックする方法?

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

これを行う標準的な方法は何ですか。

+0

あなたが定義し、同じ行に@match初期化することができます - '私の@match = grepをetc.' –

答えて

39

配列が空であるかどうかをテストするために使用されるこれらの慣用名がすべて表示されます。

if ([email protected]) 
if (@match == 0) 
if (scalar @match == 0) 

スカラーコンテキストでは、配列は要素の数として評価されます。

+0

TMTOWTDI' $#マッチ+ (@match) '](http://search.cpan.org/perldoc?Perl::Critic::Policy:1 == 0) – squiguy

+11

' @(マッチ) 'を除いて忘れないでください。 – friedo

+9

[ :ControlStructures :: ProhibitUnlessBlocks)。 (しかしそれはちょうど、私の意見、男のように) – mob

1

例えば配列の代わりに配列参照を使用している場合は、

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

は、上記その後、使用し、配列を返すと言う:

if(scalar(@$existing_match) == 0) 
関連する問題