Приглашаем посетить
Мода (modnaya.ru)

Циклы for и foreach

Циклы for и foreach

Perl поддерживает цикл for совершенно аналогично языку С:

for (statement1; expression; statement2)

    {

            statement 3;

     }

Например, следующий код использует цикл for для того, чтобы вывести значения чисел от 0 до 100:

for ($digit = 0; $digit <=100; $digit++)

     {

            print $digit, ‘ ‘;

      }

Дополнительно Perl содержит конструкцию цикла foreach , который позволяет скрипту организовывать итерации в списках и массивах. Рассмотрим пример:

@ list = (‘ a ’,’ b ’,’ c ’);

foreach $arg (@list)

    {

            print “List item: $arg\n”;

     }

foreach $i (1..10)

     {

            print “iteration $i\n”

      }

В первом случае цикл foreach осуществлял перебор значений в списочной пере­менной @ list . Во втором примере в цикле foreach осуществляется перебор чисел в диапазоне от 1 до 10.

Внутри цикла foreach может фигурировать список, состоящий из литералов, или массив, как было проиллюстрировано в предыдущем примере. После выполне­ния одной итерации циклом, специальная скалярная переменная {$ arg в первом случае и $ i во втором случае) принимает значение из заданного списка элемен­тов. Область видимости этой скалярной переменной в цикле foreach ограничива­ется телом цикла. Поэтому скалярная переменная цикла, foreach не будет конфлик­товать с идентичным именем переменной, определенной вне цикла. В следующем коде переменная с именем $i используется внутри и вне цикла foreach :

            $i = 1001;

            foreach $i (1..9)

                {

                        print “$i\n”;               # цикл выведет 123456789

                 }

           

            print “$i\n”;

Как можно увидеть из этого примера, переменная $i, используемая для организа­ции итераций цикла, не конфликтует с переменной $i, определенной вне цикла.

Особенностью цикла, foreach , которую ваши скрипты могут использовать, является возможность модификации элементов массива. (Будьте осторожны при реализации этой возможности!) Рассмотрим следующий цикл foreach , который добавляет зна­чение 10 каждому элементу массива:

@list = 1..5;

foreach $i (@list)

      {

            $i += 10;

      }

$,   = ‘ ’;

print @list;                # выведет 11 12 13 14 15

Сделаем несколько заключительных замечаний относительно цикла foreach . В языке Perl имена foreach и for рассматриваются как синонимы. Поэтому в скриптах мож­но использовать эти имена попеременно. Perl , в свою очередь, будет определять тип цикла, основываясь на его контексте.

Назад | Оглавление | Далее