2010-09-14 5 views
18

Supposons que j'ai un morceau de code Perl comme:Comment est-ce que je casse une boucle externe d'une boucle intérieure en 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 
} 

Si something() est vrai, je voudrais briser (« dernier ») toutes les boucles.

comment puis-je faire cela? Je pensais que deux options, les deux que je n'aime pas: En utilisant quelque chose GOTO Ajout d'une variable booléenne qui marquera something() est vrai, vérifier var dans chacune des boucles avant de reprendre et last() s'il est vrai.

Des suggestions ou des idées?

Merci.

+7

En Perl, le jeton de commentaire est orthographié '#', pas '//'. – daxim

Répondre

36

Utilisez une étiquette:

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