M1:
while ($i < 6)
{
++$i; # Увеличиваем счетчик на 1
redo M1 if $i == 3; # Далее пропустить для $i = 3
++$i; # иначе увеличиваем счетчик еще раз на 1
}
continue {
print "$i "; # Печатаем $i
}
Результат: 2 5 7
LABEL for (
Оператор for
полностью аналогичен оператору for в С. В перед началом цикла выполняетсяПример:
for ($i = 2; $i < 5; ++$i)
{
print $i, " ";
}
print «\nПосле цикла i = $i\n»;
Результат:
2 3 4
После цикла i = 5
LABEL foreach
Переменной
Вместо слова foreach
можно писать просто for – это слова синонимы.Пример:
@месяц = («январь»,"февраль","март"); # Создали массив
foreach $i (@месяц)
{
print $i," "; # Печать $i
}
Результат: январь февраль март
Пример:
@месяц = («январь»,"февраль","март"); # Создали массив
foreach $i (@месяц)
{
$i = uc($i); # Перевели в верхний регистр
}
print @месяц;
Результат: ЯНВАРЬФЕВРАЛЬМАРТ
Пример:
for $i (3,5,7)
{
print "$i ";
}
Результат: 3 5 7
Блок не зависимо от того имеет он метку или нет семантически представляет собой цикл который выполняется один раз. Поэтому действие опраторов цикла next
, last, redo – аналогично описанному выше. Блоки удобны для построения switch (переключатель) структур.В Перл нет специального оператора switch подобного языку С поэтому вы сами можете создавать удобные для вас конструкции.
Опыт автора показывает что для простоты написания лучше всего подходит конструкция вида if ... elsif ... else ...
хотя можно сочинить и нечто подобное:SWITCH:
{
if ($i ==1 ) { .....; last SWITCH; }
if ($i ==2 ) { .....; last SWITCH; }
if ($i ==3 ) { .....; last SWITCH; }
$default = 13;
}
Выбирайте сами по своему вкусу.
В Перл существует оператор goto
хотя где , как и когда его применять как говорил Ходжа Насредин «Тонкий филосовский вопрос».Для начинающих программистов которым от так «нужен» я бы вообще посоветовал «забыть» о его существовании. Однако при создании больших производственных задач на последнем этапе особенно при отработке «отвальных» ошибочных ситуаций конечно goto
нужен.В Перл реализовано три формы goto
. goto – метка, goto – выражение и goto – подпрограмма.goto
– метка выполняет непосредственный переход на указанную метку.goto
– выражение – Вычисляет имя метки и делает соответсвующий переход.Например если мы хотим сделать переход на одну из трех меток "
goto
(«M1», «M2», «M3»)[здесь
goto
подпрограмма – довольно редкий случай т.к. всегда проще и надежней вызвать подпрограмму «естественным» образом.В Перл реализован очень удобный механизм для написания документации в момент создания программы. Для этого применяются специальные POD операторы.
Если в теле программы интерпретатор встречает оператор начинающийся с символа '=' например:
то пропускается все до слова '
с помощью специальной программы pod
можно отделить текст документации от текста программы.Переменные
В Перл существует три типа структур данных: скаляры, массивы скаляров и хеши (hashes
) – ассоциативные массивы скаляров. Обычно элементы массивов индексируются целыми числами, первый элемент – нулевой. Отрицательное значение индекса обозначает номер позиции элемента с конца. Хеши индексируются строками символов.Имена скалярных переменных всегда начинаются с символа '$' даже когда обозначают элемент массива.
Пример:
$var1 # Простой скаляр 'var1'
$var1[0] # Первый элемент массива 'var1'
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT