Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РЭУБД_лекции.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
1.05 Mб
Скачать

Ассоциативные массивы

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

$ages{'Bob'} = 35;

$ages{'Mary'} = 25;

$, = ' '; # change output separator for print operator

print @ages{'Bob','Mary'}; # выведет '25 35'

print keys(%ages); # выведет 'Bob Mary'

for $name (keys(%ages))

{

print "$name is $ages{$keys}\n";

}

Как можно видеть, программа присваивает значения переменной '$,' (скалярная переменная, именем которой является запятая).Скрипт использует это выражение для того, чтобы при дальнейшем использовании оператора print выходные данные не сливались между собой. Далее в этой главе обсуждаются специальные переменные, такие как '$,'. Ассоциативные массивы идентифицируются с помощью фигурных скобок. Так же как с массивами, при ссылках на ассоциативный массив целиком индексы не используются. Например, ссылка @ages{'Bob', 'Mary'} использует индексы в скобках, что указывает на ассоциативный массив. Префикс @ указывает на то, что речь идет о массиве. Аналогичное использование знака доллара перед массивом указывает, что используется скалярная величина.

Примечание: Если два ключа заданы, то вместе со знаком @ эта говорит о том, что речь идет о части ассоциативного массива и результат должен быть в виде списка. Такое выражение эквивалентно #ages{' Bob'}, #ages{'Mary'}. которое имеет своим значением величину (35, 25).

Выражение print keys(%ages) вызывает оператор keys, который возвращает полный список ключей ассоциативного массива. Ссылка %ages со знаком процента в качестве префикса означает, что ссылка относится ко всему ассоциативному массиву. Обратите внимание, что цикл for ссылается на переменные, заключенные в двойные кавычки. Наконец, последний из рассмотренных примеров также использует оператор keys и вводит цикл for для распечатки всех сочетаний ассоциативного массива. Цикл for ссылается на переменные, заключенные в двойные кавычки. Perl, в свою очередь, заменит значения, на которые ссылаются переменные, в то время, когда будет анализировать строку. Программисты называют этот процесс подстановкой переменной или интерполяцией.

Примечание: Perl не интерпретирует переменные, содержащие строки в одинарных кавычках.

6.3 Конструкции языка Рerl Простые и составные операторы

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

Скрипты Perl могут содержать блоки операторов, или составные операторы, которые помещаются в фигурные скобки ({}), как показано ниже:

{

# Операторы

# Другой блок операторов

}

Ваши скрипты будут широко использовать блоки инструкций наряду с более сложными операторами. Скрипты на языке Perl могут использовать блоки инструкций для определения области видимости (scope) локальных переменных. Однако определение локальных переменных в блоке не является автоматическим. Для их декларации скрипт должен использовать ключевое слово local. Далее в этой главе мы рассмотрим область видимости переменных в деталях.