¿Cómo salgo de un bucle en Perl?
Pregunta
Estoy tratando de usar una instrucción break
en un bucle for
, pero como también estoy usando subs estrictos en mi código Perl, obtengo un error al decir:
Bareword " break " no permitido mientras " estrictos subs " en uso en ./final.pl línea 154.
¿Hay alguna solución para esto (además de deshabilitar los subs estrictos)?
Mi código tiene el siguiente formato:
for my $entry (@array){
if ($string eq "text"){
break;
}
}
Otros consejos
Datos adicionales (en caso de que tenga más preguntas):
FOO: {
for my $i ( @listone ){
for my $j ( @listtwo ){
if ( cond( $i,$j ) ){
last FOO; # --->
# |
} # |
} # |
} # |
} # <-------------------------------
Simplemente last
funcionaría aquí:
for my $entry (@array){
if ($string eq "text"){
last;
}
}
Si tiene bucles anidados, entonces last
saldrá de lo más interno. Use etiquetas en este caso:
LBL_SCORE: {
for my $entry1 ( @array1 ){
for my $entry2 ( @array2 ){
if ( $entry1 eq $entry2 ){ # or any condition
last LBL_SCORE;
}
}
}
}
La instrucción dada last
hará que el compilador salga de ambos bucles. Lo mismo se puede hacer en cualquier número de bucles, y las etiquetas se pueden arreglar en cualquier lugar.
En una iteración grande me gusta usar interrupciones. Simplemente presione Ctrl + C para salir:
my $exitflag = 0;
$SIG{INT} = sub { $exitflag=1 };
while(!$exitflag) {
# Do your stuff
}