
Тельных элементов
splice (массив, число, 0, строка) Вставка в массив элемента со значением строка
splice (массив, $targv, 0, строка) Добавление нового элемента в конец массива
Операции с ассоциативными Назначение
массивами, %аггау
keys (%ассоц~массив) Генерирование списка всех индексных строк в ассоциа-
тивном массиве
Values (%ассоц-массив) Генерирование списка значений всех элементов в ассоциа-
тивном массиве
each (%ассоц-массив) Возврат значения следующего элемента и его индексной
строки
delete (%ассоц-масив, индекс-строка) Удаление из ассоциативного массива элемента с указанным индексом
Общие операции над массивами Назначение
undef (массив) Удаление всего массива (скалярного или ассоциативного)
Ассоциативные массивы. В ассоциативном массиве для индексации элементов вместо числовых значений применяются строки. Индексную строку можно считать ключевым словом, которое используется для поиска элемента. В Perl ассоциативный массив определяется с помощью символа %, указываемого перед его именем. Список присваиваемых значений состоит из пар «индексная строка—значение элемента». За индексной строкой следует значение элемента, затем — следующая индексная строка и значение элемента и т. д. В приведенном ниже примере определяется ассоциативный массив city, состоящий из четырех элементов, каждый из которых имеет целочисленное значение и индексную строку в виде названия города.
%city = ('Sacramento', 4, 'Fallen', 86, 'Napa', 7, 'Alameda', 53 ) ;
Для установления ссылки на элемент ассоциативного массива применяется его индексная строка. Индексная строка заключается в одинарные кавычки и фигурные скобки (не круглые!).
print $city{'Fallon'};
Чтобы добавить в ассоциативный массив новый элемент, необходимо задать индекс в виде строки и значение этого элемента.
$city{'LA'} = 45;
Признаком списка значений ассоциативного массива является символ %, который ставится перед именем массива. В следующем примере задан вывод на экран всех значений массива city:
print %city;
В языке Perl для работы с ассоциативными массивами предназначен целый набор функций (списочных операций). С их помощью можно формировать списки ключей или значений. Эти функции облегчают выполнение итерации в ассоциативном массиве. Получить значения строк, применяемых для индексирования элементов ассоциативного массива, довольно тяжело, что отличает его от обычного массива. В скалярном массиве индексирование всегда начинается с 0, а завершается последним элементом. В ассоциативных массивах в качестве индексов выступают произвольные строки. Эти строки служат для обращения к элементам массива. С помощью функции keys можно создать список, состоящий из индексных строк ассоциативного массива. Один из дальнейших путей применения индексных строк — индексирование самого массива. Функция keys использует в качестве аргумента имя ассоциативного массива и возвращает список всех индексных строк, которые можно применять для обращения к отдельным элементам массива. В следующем примере функция keys генерирует список индексных строк массива city. Индексные строки поочередно присваиваются переменной myindex. Затем, при выполнении операции вывода на экран, производится индексирование массива city посредством переменной myindex.
foreach Smyindex ( keys(%city) )
{
print " $city($myindex) \n " ;
}
Функция each подобна функции keys, однако она наряду с индексной строкой для элемента ассоциативного массива возвращает и значение самого элемента. Аргументом функции each является имя массива. Итак, при обращении к функции each возвращается следующий элемент массива и соответствующая ему индексная строка. В примере, приведенном ниже, переменным myindex и myval присваивается индексная строка, а также значение первого элемента массива myvar.
($myindex, $myval) = each (%city) ;
Для обращения к каждому элементу массива можно использовать функцию each, поместив ее в цикл. В следующем примере с помощью функции each переменным myval и myindex поочередно присваиваются каждый элемент массива и его индексная строка.
while ( ($myindex, $myval) = each (%city) ;
{
print "$myval $myindex\n " ;
}
Функция values возвращает список значений всех элементов ассоциативного массива. Ее применение целесообразно, если требуется сформировать список значений элементов ассоциативного массива без индексных строк.
Средством удаления элемента из ассоциативного массива является функция delete. Она использует в качестве аргумента индексную строку удаляемого элемента и возвращает его значение. В следующем примере функция delete применяется для удаления элемента, соответствующего индексной строке «Sacramento».
delete (%myarr, "Sacramento") ;
Удалить целый массив позволяет функция undef. Ее действие распространяется как на скалярные, так и на ассоциативные массивы. При полном удалении массива уменьшается объем используемой памяти.
Управляющие структуры. Управляющие структуры языка Perl подобны управляющим структурам языков gawk и С, а также интерпретатора TCSH. В Perl-сценариях используются циклы, обеспечивающие повторение команд, а также условия, которые позволяют выбирать команду из нескольких заданных. В выражениях условий применяются как строковые (табл. 5), так и числовые (табл. 3) операторы, а также регулярные выражения. Управляющие структуры Perl и их синтаксис описаны в табл. 6.
Таблица 5. Строковые, логические, файловые операции и операции присваивания
Операции сравнения Описание
строк
gt Больше чем
lt Меньше чем
qe Больше или равно
le Меньше или равно
eq Равно
ne Не равно
Проверка файлов Описание
-e Файл существует
-f Файл существует и является обычным
-s Файл не пуст
-z Файл пуст и имеет нулевой размер
-r Файл читаемый
-w Возможна запись в файл и его модификация
-х Файл исполняемый
-d Именем файла является имя каталога
-b Бинарный файл
-Т Текстовый файл
Операции присваивания Описание
= Присвоить значение переменной
Таблица 6. Управляющие структуры, циклы и функции Perl Управляющие структуры Описание
МЕТКА: { Блок представляет собой набор операторов, заключенных в
операторы: фигурные скобки. Операторы выполняются последовательно.
} Блок может иметь метку
Условные управляющие Описание
структуры: if, else, elsif, case
if (выражение) { Операторы выполняются, если проверочное выражение воз-
операторы', вращает истинное значение. Необходимо, чтобы операторы на-
} холились внутри блока
Таблица 6. Управляющие структуры, циклы и функции Perl (продолжение)
Условные управляющие Описание структуры: if, else, elsif, case
if (выражение) { Операторы выполняются, если проверочное выражение воз-
операторы; вращает истинное значение. В противном случае выполняются
} операторы в блоке else
else (выражение) {
операторы;
}
if (выражение) { Ключевое слово elsif позволяет создавать вложенные струк-
операторы; туры if и выбирать один из нескольких вариантов. При обна-
} ружении первого истинного if-выражения выполняются соот-
elsif (выражение) { ветствующие операторы, а управление передается операторам,
операторы; следующим за структурой elsif
}
else (выражение) {
операторы;
}
unless (выражение) { Операторы выполняются, если проверочное выражение воз- операторы; вращает ложное значение }
Выражение ? оператор1 : Если выражение истинно, выполняется onepamop1, иначе —
оператор2 оператор2
МЕТКА: { Имитирует структуру switch, используя if в блоке, причем
if (выражение) { оператор last указывает на метку блока {операторы; last МЕТКА};
}