for (expression_1; expression_2; expression_3)
{ ::.. }
Где:
for( $fr = 0 ; $fr < 3 ; ++$fr )
{
print "->$fr<-/n";
}
Результат будет выглядеть так:
->0<- ->1<- ->2<-Здесь expression_1 заменено на $fr = 0, как вы видите счетчиком, здесь служит скаляр $fr и ему присваивается начальное значение 0. Этот цикл будет работать пока выражение $fr < 3 будет выполнятся, если же нет, то он прервется. Шаг, с которым будет увеличиваться цикл, равен единице, это следует из выражения ++$fr (обратите внимание оператор ++ - инкремент, а также -- -декремент пишется перед переменной), которое можно заменить на более понятное $fr = $fr + 1;
Синтаксис:
foreach VAR ( ARRAY )
{------------}
Пример:
@array = ("one","two","three");
foreach $var (@array)
{
print "@var : ";
}
Результат:
one : two : threeКак видно из примера здесь каждое значение массива @array присваивается переменной $var. Можно также записать в таком виде:
foreach $var ("one","two","three")
{ ------- }
Синтаксис:
write (_EXP_)
{ ----------- }
Здесь _EXP_, условие, при котором цикл будет работать.
Пример:
$wr = 0;
write ( $wr < 6 )
{ print "->$wr<-\n";
$wr = $wr + 2;
}
Результат будет такой:
->0<- ->2<- ->4<-Обратите внимание, что в цикле переменная $wr изменяется, если же она не будет изменяться, то цикл будет работать бесконечно но, слава богу, в юниксе есть такая команда как KILL, или сочетание клавиш Ctrl + C (это на случай если он у вас все-таки повис).
Если у вас в цикле должен повторяться только один оператор, то можно записать, к примеру, так:
++$var ( $var < 5 );Оператор print пишется перед оператором цикла.
Существуют так же операторы управления циклом while:
$wr = 0;
until ( $wr > 6 )
{ print "->$wr<-\n";
$wr = $wr + 2;
}
Формат следующий:
метка: .... goto метка;Можно сделать переход к подпрограммам. Хотя подпрограммы мы будем рассматривать в следующих шагах, мы все-таки напишем его синтаксис:
goto $subroutine;