Как известно, ассоциативные массивы - это такие массивы, укоторых индексом является не числовая величина, а, например, имя. В языке Perl имеется несколько встроенных функций, которые упрощают обработку скриптами ассоциативных массивов.
Функция KEYS
Функция keys возвращает значения ключей, которые отвечают ассоциативному массиву. Она имеет следующий формат:
@key_list = keys(%Array);
Функция keys возвращает массив ключей в виде регулярногосписка. Следующий фрагмент программы иллюстрирует использование функции keys:
$ages{"Bob"} = 25; $ages{"Mary"} = 30; $ages{"Zack"} = 15; @list = keys(%ages); # @list будет "Zack", "Bob", "Mary" @list = sort keys %ages # @ list "Bob", "Mary", "Zack" for $key (sort keys %ages) { print "$key is $ages{$key}\n" }
Функция VALUES
Функция values возвращает обычный массив, состоящий из значений ассоциативного массива. Она имеет следующий формат:
@value_list = values(%Array)
Функция values возвращает массив значений ассоциативного массива в виде регулярного списка. Следующий фрагмент программы иллюстрирует использование функции values:
# Используем значения из предыдущего примера %ages = ("Bob", 25, "Mary", 30, "Zack", 15); @list = sort values %ages; # @list (15, 25, 30) @list = %ages; # @list ("Zack", 15, "Bob", 25, "Mary", 30)
Функция EACH
Функция each осуществляет итерации элементов в ассоциативном массиве. Она имеет следующий формат:
@key_values = each(%Array);
Всякий раз, когда скрипт вызывает функцию each, она возвращает список из двух компонент, которые содержат пару ключ-значение. Когда функция достигает конца списка, она возвращает пустой список. При следующем вызове функции процесс итерации начнется сначала. Следующий фрагмент программы иллюстрирует использование функции each:
# Используем значения из предыдущего примера %ages = ("Bob", 25, "Mary", 30, "Zack", 15); while (($name, $age) = each %ages) { # Выведем ages print "$key is $ages{$key}\n"; }
Функция DELETE
Функция delete удаляет элементы ассоциативного массива. Она имеет следующий формат:
Delete $Array{Key}
Следующая инструкция использует функцию delete для того,чтобы удалить элемент, отвечающий ключу Bob из ассоциативного массива $Employees:
Delete $Employees{"Bob"}
8 8 8
| |