I'estou tentando usar uma declaração de 'quebra' em um loop de 'para', mas como I'estou também usando subs estritos no meu código Perl, I'estou recebendo um erro dizendo:
Bareword "break" não permitido enquanto
"estrito subs" em uso em ./final.pl linha 154.
Existe uma solução para isto (além de desactivar os substitutos estritos)?
O meu código está formatado da seguinte forma:
for my $entry (@array){
if ($string eq "text"){
break;
}
}
Oh, eu encontrei-o. Você usa [último][1] ao invés de [intervalo][2].
for my $entry (@array){
if ($string eq "text"){
last;
}
}
[1]: http://perldoc.perl.org/functions/last.html [2]: https://perldoc.perl.org/functions/break.html
Dados adicionais (caso você tenha mais perguntas):
FOO: {
for my $i ( @listone ){
for my $j ( @listtwo ){
if ( cond( $i,$j ) ){
last FOO; # --->
# |
} # |
} # |
} # |
} # <-------------------------------
Simplesmente "último" funcionaria aqui:
for my $entry (@array){
if ($string eq "text"){
last;
}
}
Se você tiver laços aninhados, então o "último" sairá do interior. Use etiquetas neste caso:
LBL_SCORE: {
for my $entry1 ( @array1 ){
for my $entry2 ( @array2 ){
if ( $entry1 eq $entry2 ){ # or any condition
last LBL_SCORE;
}
}
}
}
Dada a "última" declaração fará com que o compilador saia de ambos os loops. O mesmo pode ser feito em qualquer número de loops, e as etiquetas podem ser fixadas em qualquer lugar.