Come posso uscire da un ciclo in Perl?
Domanda
Sto cercando di usare un'istruzione break
in un ciclo for
, ma poiché sto anche usando sottotitoli rigidi nel mio codice Perl, sto ottenendo un errore che dice:
Bareword " break " non consentito mentre "Sottoscrizioni rigide" in uso presso ./final.pl linea 154.
Esiste una soluzione alternativa per questo (oltre a disabilitare i sottotitoli severi)?
Il mio codice è formattato come segue:
for my $entry (@array){
if ($string eq "text"){
break;
}
}
Altri suggerimenti
Dati aggiuntivi (in caso di ulteriori domande):
FOO: {
for my $i ( @listone ){
for my $j ( @listtwo ){
if ( cond( $i,$j ) ){
last FOO; # --->
# |
} # |
} # |
} # |
} # <-------------------------------
Semplicemente last
funzionerebbe qui:
for my $entry (@array){
if ($string eq "text"){
last;
}
}
Se hai cicli nidificati, last
uscirà dal più interno. Usa 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'istruzione last
farà uscire il compilatore da entrambi i loop. Lo stesso può essere fatto in qualsiasi numero di loop e le etichette possono essere riparate ovunque.
In una grande iterazione mi piace usare gli interrupt. Premi Ctrl + C per uscire:
my $exitflag = 0;
$SIG{INT} = sub { $exitflag=1 };
while(!$exitflag) {
# Do your stuff
}