Come faccio a uscire da un ciclo in Perl?

Sto provando a usare un’istruzione break in un ciclo for , ma visto che sto usando anche sottotitoli rigidi nel mio codice Perl, sto ricevendo un errore che dice:

Bareword “break” non consentito mentre “strict subs” in uso alla riga ./final.pl 154.

C’è una soluzione per questo (oltre a disabilitare i sottotitoli rigidi)?

Il mio codice è formattato come segue:

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

Oh, l’ho trovato. Usi l’ ultimo invece della rottura

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

Dati aggiuntivi (nel caso abbiate più domande):

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

Semplicemente potrebbe funzionare qui:

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

Se hai cicli annidati, l’ last uscirà dall’interno. Utilizza le etichette in questo caso:

 LBL_SCORE: { for my $entry1 ( @array1 ){ for my $entry2 ( @array2 ){ if ( $entry1 eq $entry2 ){ # or any condition last LBL_SCORE; } } } } 

Data l’ last dichiarazione, il compilatore uscirà da entrambi i loop. Lo stesso può essere fatto in qualsiasi numero di loop e le etichette possono essere fissate ovunque.

In una grande iterazione mi piace usare gli interrupt. Basta premere Ctrl + C per uscire:

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