# Программа отображения значений элементов массива
foreach @mylist = ( 34, 21, 96, 85); # Определение массива с 4 элементами
foreach $mynum ( @mylist ) #присваивание переменной $mynum значения каждого из элементов
{
print "$mynum \n";
}
С помощью массива @ARGV можно обработать элементы командной строки как список значений. Аргументы, указанные в командной строке при вызове сценария, становятся списком" значений, к которому происходит обращение в цикле foreach. Переменной, используемой в этом цикле, поочередно присваиваются значения всех аргументов: при первой итерации цикла — значение первого аргумента, при второй итерации — значение второго аргумента и т. д.
В Perl существуют специальные команды для более тонкого управления циклами и блоками операторов. Они имеют аналоги в языке С, использующие ссылки на метки в программе. Если вы применяете их для управления циклом, надлежит снабдить этот цикл меткой.
Команда last соответствует команде break языка С. Она предназначена для завершения выполнения цикла, а также блока операторов. Команда next позволяет пропустить оставшиеся в цикле операторы. Она аналогична команде continue языка С и рассчитана на работу с блоком продолжения. Блок продолжения состоит из команды continue и следующего за ней блока операторов. Этот блок выполняется в конце цикла. Даже если применяется команда next (разрешено пропустить оставшиеся операторы), блок продолжения всегда выполняется. С его помощью можно обеспечить выполнение таких операций, как инкрементирование счетчика цикла. Назначение команды redo — повторение цикла, в том числе тогда, когда условие его выполнения не соблюдается. В языке С подобной команды нет. Чтобы проигнорировать блоки продолжения, следует обратиться к командам redo и last.
Проверка условий: if, eisif, unless и switch. Структуры if-else и elsif применяются для выбора одного из нескольких вариантов. Можно ограничиться использованием оператора if, если вариант один, либо объединить его с else или elsif, если на выбор предлагается ряд вариантов. Структура if содержит проверочное выражение, заключенное в круглые скобки, и блок операторов. Если в результате проверки получено истинное значение, операторы выполняются, иначе блок пропускается. В отличие от других языков программирования, в Perl за проверочным выражением может идти только блок операторов в фигурных скобках (даже если он состоит из одного оператора). В следующем примере проверяется, успешно ли выполнена операция открытия файла. Если это не так, выполняется команда die, которая завершает работу программы. Операция НЕ (!) выдает значение «истина», если выполнение функции open завершилось неудачно, обеспечивая, таким образом, активизацию команды die.
if (!(open (REPS, "< $filen")))
{
die "Can't open $filen";
} else
{
print "Opened $filen successfully" ;
}
Функции обработки строк. Стандартные операции со строками (например, определение длины строки, копирование подстроки из строки и т. д.) производятся посредством функций length, index и substr. Особый интерес представляет функция split, которая генерирует массив, разбивая строку на элементы. Она подобна функции split языка gawk. Оператор . служит для конкатенации двух строк, а оператор х генерирует строки, состоящие из повторяющихся символов.
Рассмотрим, как к имени файла myaddress добавить суффикс .dat. Для конкатенации двух строк воспользуемся оператором точка (.). Если содержимое переменной $cur-file — myaddress, то в результате выполнения приведенного ниже оператора переменная $newfile получит значение «myaddress.dat».
$newfile = $curfiie . ".dat";
Оператор х позволяет повторить строку несколько раз. Перед знаком оператора, х, вводится повторяемая строка, а за ним — число повторений. Строка может состоять как из одного, так и из нескольких символов. С помощью оператора х можно сформировать список, элементы которого имеют одинаковые значения и который используется при инициализации массива.
Таблица 7. Строковые операторы Оператор Описание
строка . строка Оператор . служит для конкатенации строк
строка х число Повторение строки или символа указанное число раз