2012-10-05 19 views
24

To powinno być proste, mam nadzieję. Inicjuję pustą tablicę, wykonuję grep i umieszczam w nim wyniki (jeśli istnieją), a następnie sprawdzam, czy są puste. Tak jak poniżej:Perl jak sprawdzić, czy tablica jest wciąż pusta?

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

Jaki jest standardowy sposób robienia tego?

+0

Można zdefiniować i zainicjować @match na tej samej linii - 'My @match = grep etc.' –

Odpowiedz

39

Zobaczysz wszystkie te idiomy używane do sprawdzenia, czy tablica jest pusta.

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

W kontekście skalarnym tablica jest oceniana jako liczba zawartych w niej elementów.

+0

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

+11

Nie zapominaj o 'unless (@match)' – friedo

+9

[Zapomnij o 'chyba że @match)'] (http://search.cpan.org/perldoc?Perl::Critic::Policy: : ControlStructures :: ProhibitUnlessBlocks). (ale to tylko, jak, moja opinia, człowiek) – mob

1

Jeśli używasz arrayref zamiast tablicy, powiedz np.

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

Say powyżej zwraca tablicę, a następnie użyć:

if(scalar(@$existing_match) == 0) 
Powiązane problemy