Как создать бесконечный цикл в Perl

Существует несколько способов как можно создать бесконечный цикл в Perl.

Использовать while

Первый способ с помощью которого можно создать бесконечный цикл — это использовать цикл while. Этот цикл выполняется пока выражение является истиной. Можно в качестве выражения написать простую константу, которая является истиной и в таком случае цикл будет работать бесконечно. Вот пример кода:

#!/usr/bin/perl

while (1) {
    # some code
}

Если же нужно завершить работу этого цикла, то в теле цикла нужно выполнить last. Вот пример:

▶ Run
#!/usr/bin/perl

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

Обратите внимание что для выхода из цикла используется ключевое слово last, а не return и не break.

Использовать for

Вот как написать бесконечный цикл на языке программирования Perl c помощью for:

#!/usr/bin/perl

for (;;) {
    # some code
}

После for в скобках идет 3 фрагмента кода:

  • начальное значение
  • проверка
  • изменение

Обычно тело цикла выполняется в том случае если проверка возвращает истину. Но если проверка отсутствует, то в этом особом случае получается бесконечный цикл.

Для того чтобы выйти из этого бесконечного цикла нужно использовать last:

▶ Run
#!/usr/bin/perl

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

Использовать until

Вот еще один способ как можно создать бесконечный цикл в Perl:

#!/usr/bin/perl

do {
    # some code
} until(0)

Блок кода выполняется до тех пор пока условие в until является ложью.

Для того чтобы выйти из этого бесконечного цикла тоже нужно использовать ключевое слово last, но чтобы оно сработало правильно нужно разместить весь код бесконечного цикла в фигурные скобки:

▶ Run
#!/usr/bin/perl

my $i = 0;

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

Вот пример, в котором мы пытаемся использовать last, но не обрамляем код скобками:

▶ Run
#!/usr/bin/perl

my $i = 0;

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

Если выполнить этот код, то будет ошибка:

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

Связанные темы

Другие статьи

Комментарии