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;