Оператор loop. «Свобода» переменной цикла

Программа в предыдущей заметке показала, что набор значений, которые принимает переменная в цикле for, определен раз и навсегда (разумеется, команда завершения цикла last не в счет). Цикл допустимо объявить по-иному, с помощью оператора loop(). Синтаксически он совпадает с циклом for() в C++ и Perl 5.

Однако, отличие в том, что переменная цикла внутри его тела доступна для любых манипуляций. Код в следующем примере совпадает с предыдущим во всем, кроме объявления цикла.

Вывод программы также отличается от результата работы предыдущего примера: после того, как счетчик принудительно изменен, отсчет продолжается с нового значения:

1 1
2 2
3 3
4 4
5 7
8 8
9 9
10 10
sub main(){
loop ($counter = 1; $counter <= 10; $counter++){
print $counter, ‘ ‘;
$counter = 7 if $counter == 5;
print $counter, «\n»;
}
}