perl loops break strict

¿Cómo puedo salir de un bucle en Perl?



loops break (4)

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, aparece un error que dice:

No se permite el término "interrupción" mientras que "subs estrictos" en uso en ./final.pl línea 154.

¿Hay una solución para esto (además de deshabilitar subs estrictos)?

Mi código tiene el siguiente formato:

for my $entry (@array){ if ($string eq "text"){ break; } }


Datos adicionales (en caso de tener más preguntas):

FOO: { for my $i ( @listone ){ for my $j ( @listtwo ){ if ( cond( $i,$j ) ){ last FOO; # ---> # | } # | } # | } # | } # <-------------------------------


En una iteración grande me gusta usar interrupciones. Solo presiona Ctrl + C para salir:

my $exitflag = 0; $SIG{INT} = sub { $exitflag=1 }; while(!$exitflag) { # Do your stuff }


Oh, lo encontré. Usas el last lugar de break

for my $entry (@array){ if ($string eq "text"){ last; } }


Simplemente el last funcionaría aquí:

for my $entry (@array){ if ($string eq "text"){ last; } }

Si tiene bucles anidados, el last saldrá desde el interior. 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; } } } }

Dada la last afirmación hará que el compilador salga de ambos bucles. Lo mismo se puede hacer en cualquier cantidad de bucles, y las etiquetas se pueden arreglar en cualquier lugar.