Comment puis-je sortir d'une boucle en Perl?
J'essaie d'utiliser une instruction break
dans une boucle for
, mais comme j'utilise aussi des sous-marins stricts dans mon code Perl, j'obtiens une erreur disant:
Bareword "break" non autorisé pendant "sous-marins stricts" en cours d'utilisation à ./final.pl ligne 154.
Existe-t-il une solution de contournement pour cela (en plus de désactiver les sous-marins stricts)?
Mon code est formaté comme suit:
for my $entry (@array){
if ($string eq "text"){
break;
}
}
4 réponses
Oh, je l'ai trouvé. Vous utilisez {[2] dernière} au lieu de break
for my $entry (@array){
if ($string eq "text"){
last;
}
}
Données supplémentaires (au cas où vous auriez d'autres questions):
FOO: {
for my $i ( @listone ){
for my $j ( @listtwo ){
if ( cond( $i,$j ) ){
last FOO; # --->
# |
} # |
} # |
} # |
} # <-------------------------------
Simplement last
fonctionnerait ici:
for my $entry (@array){
if ($string eq "text"){
last;
}
}
Si vous avez des boucles imbriquées, alors last
quittera de l'intérieur. Utilisez des étiquettes dans ce cas:
LBL_SCORE: {
for my $entry1 ( @array1 ){
for my $entry2 ( @array2 ){
if ( $entry1 eq $entry2 ){ # or any condition
last LBL_SCORE;
}
}
}
}
Étant donné l'instruction last
, le compilateur sortira des deux boucles. La même chose peut être faite dans n'importe quel nombre de boucles, et les étiquettes peuvent être fixées n'importe où.
Sur une grande itération, j'aime utiliser des interruptions. Juste appuyez sur Ctrl + C pour quitter l':
my $exitflag = 0;
$SIG{INT} = sub { $exitflag=1 };
while(!$exitflag) {
# Do your stuff
}