2010-09-14 14 views
18

Załóżmy, że mam kawałek kodu Perl jak:Jak mogę złamać zewnętrzną pętlę z wewnętrznej pętli w Perlu?

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 
} 

something() Jeśli to prawda, chciałbym złamać („ostatni”) wszystkie pętle.

jak mogę to zrobić? Myślałem o dwóch opcji, z których zarówno ja nie lubię: Korzystanie coś GOTO Dodawanie logiczną zmienną, która będzie oznaczyć something() jest prawdą, sprawdź to var w każdej z pętli zanim wznowi i last(), czy to prawda.

Wszelkie sugestie lub przemyślenia?

Dzięki.

+7

W języku Perl token komentarza jest pisany '# ', a nie' // '. – daxim

Odpowiedz

36

użycie etykiety:

OUTER: 
foreach my $x (@x) { 
foreach my $y (@z) { 
    foreach my $z (@z) { 
    if (something()) { 
    last OUTER; 
    } 
    # do stuff 
    } 
    # do stuff 
} 
# do stuff 
} 
Powiązane problemy