Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
45
Добавлен:
27.03.2016
Размер:
237.06 Кб
Скачать

Тельных элементов

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 МЕТКА};

}

Соседние файлы в папке Лаб_7