J'essaie d'utiliser une instruction break
dans une boucle for
, mais comme j'utilise également des sous-programmes stricts dans mon code Perl, le message d'erreur suivant s'affiche:
Le mot clé "break" n'est pas autorisé tant que "subs strict" est utilisé à la ligne ./final.pl 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;
}
}
Données supplémentaires (si vous avez 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
sortira 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. Même chose peut être fait 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. Appuyez simplement sur Ctrl + C quitter:
my $exitflag = 0;
$SIG{INT} = sub { $exitflag=1 };
while(!$exitflag) {
# Do your stuff
}