Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Perl / Для начинающих /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Конструкции языка PERL - Программирование от RIN.RU
Конструкции языка PERL



Циклы FOR и FOREACH


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


for (statement1; expression; statement2)
{
statement3;
}


Например, следующий код использует цикл 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 рассматриваются как синонимы


Оператор безусловного перехода GOTO


Perl поддерживает оператор безусловного перехода goto, который является идентичным такому же оператору языка программирования С. Ниже приведен пример использования оператора goto для вывода чисел от 1 до 10:


$i = 1;
loop:
print $i++, " ";
if ($i <=10)
{
goto loop;
}


Модификаторы операторов


В языке Perl используются специальные формы конструкции if, unless, while и until, которые позволяют управлять ходом вычислений. В определенных случаях эти cпециальные конструкции могут сделать ваш код более ясным и легко читаемым. Для того, чтобы код было легче читать и его смысл был более очевиден, целесообразно выбирать подходящий формат для записи. Рассмотрим следящее выражение, использующее функцию die для того, чтобы закончить выполнение скрипта, если значение переменной $count меньше чем 10:


if ($count < 10)
{
die;
}


Если расположить функцию die перед оператором if, как показано ниже, число строк кода уменьшится:


die if ($count < 10);


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


($count >= 10) || die;


В данном случае, если переменная $count больше либо равна 10, Perl прекращает дальнейшее вычисление в данной строке и функция die не выполняется. В противном случае, если переменная $count меньше 10, после вычисления первой части выражения код запускает функцию die и тем самым заканчивает выполнение скрипта. Наконец, в следующем примере использование конструкции unless также позволяет уменьшить число строк до одной:


die unless ($count >= 10);


Аналогичным образом, следующие циклы while являются идентичными:


$i = 0;
while ($i < 10)
{
$i++;
}
$i = 0;
$i++ while ($i < 10);


Как можно видеть, используя модификацию конструкции, скрипт позволяет сократить число строк в записи цикла до одной. Аналогичным образом, следующие циклы until эквивалентны:


$i = 10;
until ($i >= 10)
{
$i++;
};
$i = 10;
$i++ until ($i >=10);


Примечание: Во всех четырех случаях, даже если выражение для оценивания расположено после инструкции для выполнения, Perl сначала анализирует условие и только потом выполняет инструкцию.


<<<  НазадВперед  >>>
 1  2  3  4 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Синтаксис

Использование отладчика PERL

Типы данных в PERL

Переменные

Операторы PERL

Подпрограммы

Обработка строк

Обработка списков

Работа с массивами

Функции обработки ассоциативных массивов

Файловый ввод и вывод

Обработка бинарных данных

Работа с каталогами

Форматированный вывод

Регулярные выражения

CGI-скрипты при помощи PERL

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь