2010-09-14 20 views
18

Supongamos que tengo una pieza de código Perl como:¿Cómo rompo un bucle externo de uno interno 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() es cierto, me gustaría romper ('últimos') todos los bucles.

¿cómo puedo hacer eso? pensé en dos opciones, ambas de las cuales no me gustan: el uso de algo GOTO Adición de una variable booleana que marcará something() es cierto, mira esto var en cada uno de los bucles antes de que se reanuden y last() si es verdad.

¿Alguna sugerencia o idea?

Gracias.

+7

En Perl, el token de comentario se deletrea '#', no '//'. – daxim

Respuesta

36

Uso una etiqueta:

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