2010-09-14 10 views
18

Supponiamo che io sono un pezzo di codice Perl come:Come posso interrompere un ciclo esterno da uno interno in Perl?

foreach my $x (@x) { 
foreach my $y (@z) { 
    foreach my $z (@z) { 
    if (something()) { 
    # I want to break free! 
    } 
    # do stuff 
    } 
    # do stuff 
} 
# do stuff 
} 

Se something() è vero, vorrei spezzare ('ultimi') tutti i loop.

come posso farlo? Ho pensato a due opzioni, entrambi i quali non mi piacciono: Usando qualcosa GOTO Aggiunta di una variabile booleana che segnerà something() è vero, controllare questo var in ciascuna delle anse, prima di riprendere e last() se è vero.

Eventuali suggerimenti o pensieri?

Grazie.

+7

In Perl, il token del commento è scritto '#', non '//'. – daxim

risposta

36

Uso un'etichetta:

OUTER: 
foreach my $x (@x) { 
foreach my $y (@z) { 
    foreach my $z (@z) { 
    if (something()) { 
    last OUTER; 
    } 
    # do stuff 
    } 
    # do stuff 
} 
# do stuff 
} 
Problemi correlati