2012-10-05 29 views
24

Esto debería ser simple con suerte. Inicializo un conjunto vacío, hago un grep y coloco los resultados (si hay alguno) y luego verifico si está vacío. De esta manera:Perl ¿cómo comprobar si la matriz todavía está vacía?

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

¿Cuál es la forma estándar de hacer esto?

+0

Puede definir e inicializar @match en la misma línea - 'mi @match = grep etc.' –

Respuesta

39

Verá todas estas expresiones idiomáticas utilizadas para comprobar si una matriz está vacía.

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

En contexto escalar, una matriz se evalúa como la cantidad de elementos que contiene.

+0

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

+11

No olvide 'a menos que (@match)' – friedo

+9

[No lo olvide 'a menos que (@match)'] (http://search.cpan.org/perldoc?Perl::Critic::Policy: : ControlStructures :: ProhibitUnlessBlocks). (pero es solo, como, mi opinión, hombre) – mob

1

Si está utilizando un arrayref en lugar de una matriz, digamos p. Ej.

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

Di anterior devuelve una matriz, a continuación, utilizar:

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