Como criar um loop infinito em Perl

Há várias maneiras de como você pode criar um loop infinito em Perl.

Usar while

O primeiro método com o qual você pode criar um loop infinito é usar o ciclo de while. Este ciclo é executado até que a expressão é a verdade. Pode ser como a expressão escrever uma constante, que é a verdade e, nesse caso, o ciclo será executado indefinidamente. Aqui está um exemplo de código:

#!/usr/bin/perl

while (1) {
    # some code
}

Se você precisa de encerrar este ciclo, o corpo de um loop precisa realizar last. Aqui está um exemplo:

▶ Run
#!/usr/bin/perl

my $i = 0;
while (1) {
    print $i;
    last if $i > 2;
    $i++;
}

Note que para sair do ciclo de utilizar a palavra-chave last, e não returne não break.

Usar for

Veja como escrever um loop infinito na linguagem de programação Perl, c o for:

#!/usr/bin/perl

for (;;) {
    # some code
}

Depois de for entre parênteses vai de 3 trecho de código:

  • valor inicial
  • verificação de
  • mudança

Normalmente, o corpo do loop é executado no caso de se verificar retorna a verdade. Mas se não há verificação, então, nesse sentido, o resultado é um ciclo infinito.

Para sair deste ciclo infinito precisa usar last:

▶ Run
#!/usr/bin/perl

for (my $i = 0;;$i++) {
    print "$i";
    last if $i > 2;
}

Usar until

Aqui está outra maneira de como você pode criar um loop infinito em Perl:

#!/usr/bin/perl

do {
    # some code
} until(0)

O bloco de código é executado até que a condição em until é uma mentira.

Para sair deste ciclo infinito também é preciso usar a palavra-chave last, mas para que ele funcione corretamente você precisa colocar todo o código em um loop de chaves:

▶ Run
#!/usr/bin/perl

my $i = 0;

{
    do {
        print $i;
        last if $i > 2;
        $i++;
    } until(0)
}

Aqui está um exemplo em que tentamos usar o last, mas não обрамляем código parênteses:

▶ Run
#!/usr/bin/perl

my $i = 0;

do {
    print $i;
    last if $i > 2;
    $i++;
} until(0)

Se você executar este código, o erro será:

Can't "last" outside a loop block at script.pl line 7.
0123

Temas relacionados

Outros artigos