2012-10-05 17 views
24

Questo dovrebbe essere semplice, si spera. Inizializzo un array vuoto, eseguo un grep e inserisco i risultati (se ce ne sono) in esso, quindi verifica se è vuoto. Così:Perl come verificare se la matrice è ancora vuota?

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

Qual è il modo standard per farlo?

+0

È possibile definire e inizializzare @match sulla stessa linea - 'mia @match = grep etc.' –

risposta

39

Vedrete tutti questi idiomi utilizzati per verificare se un array è vuoto.

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

In contesto scalare, una matrice viene valutata come il numero di elementi che contiene.

+0

TMTOWTDI' $ # partita + 1 == 0' – squiguy

+11

Non dimenticare 'a meno che (@match)' – friedo

+9

[Non dimenticare 'a meno che (@match)'] (http://search.cpan.org/perldoc?Perl::Critic::Policy: : ControlStructures :: ProhibitUnlessBlocks). (ma è solo una mia opinione, amico) – mob

1

Se si utilizza un arrayref anziché un array, ad esempio per es.

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

Dire sopra restituisce un array, quindi utilizzare:

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