Perl поддерживает операторы циклов for , while и do с небольшими отличиями от их реализации в языке С. Существенным отличием служит то, что Perl требует использования инструкций блоками, заключенными в фигурные скобки. Кроме того, как вы познакомитесь , далее, Perl расширяет конструкцию цикла, что6ы обеспечить ее некоторые новые формы. В следующих примерах циклы for , while и do работают аналогичным образом на языках С и Perl :
f or($i = 0; $i< 100;$i++)
{
printf("%d\n", $i) ;
}
while ($i > 0)
{
printf("%d\n", $i-);
}
do {
printf("%d\n", $i++);
} while ($ i < 0);
Конструкция циклов на языке С отлична от конструкции на языке Perl еще и в том, что Perl не содержит оператора break , а оператор continue выполняет совершенно иную функцию. К счастью, Perl обеспечивает некоторые новые, более гибкие и более интуитивно понятные конструкции:
· last выход из цикла (как оператор С break )
· next начать новую итерацию (как оператор С continue )
· redo повторить текущую итерацию
Для понимания конструкций циклов на языке Perl , необходимо разобраться с использованием блока continue . Рассмотрим следующий цикл while , который содержит блок continue :
$i = 100;
while ($i > 0)
{
print $i;
} continue {$i-}
Вы можете представлять себе блок continue как третье выражение в цикле for , которое выполняется на каждой итерации. Аналогичным образом Perl выполняет блок continue в конце каждой итерации. Однако, как вы узнаете далее, блок con tinue обеспечивает скрипту более полный контроль над процессом, чем обеспечивает цикл for . Когда цикл на языке Perl использует оператор next , блок continue все равно выполняется, если только он существует. Однако если цикл использует оператор redo , блок continue не исполняется.