Дополнительная информация о хэшах

Если вы новичок в Perl, некоторые операции с хэшами будут для вас далеко не очевидны. Из-за специфической природы хэшей для некоторых часто встречающихся операций понадобятся новые функции, в которых не было необходимости при работе со скалярами и массивами.


Проверка ключей хэша

Чтобы проверить, существует ли некоторый ключ в хэше, казалось бы, можно использовать следующий синтаксис:



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



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



Проверка данного элемента выдаст ложное значение, потому что проверяется не наличие ключа, а связанное с ним значение. Итак, как же сделать проверку ключей корректно? Для этого в Perl есть специальная функция exists. Функция exists проверяет наличие указанного ключа в хэше и возврашает либо истинное значение (если ключ существует), либо ложное (в противном случае):



Удаление ключей из хэша

Другая неочевидная операция — удаление ключей из хэша. Как вы уже убедились, присвоение элементу хэша значения undef здесь не сработает. Для удаления одного ключа хэша можно воспользоваться функцией delete:


Для удаления всех ключей и значений из хэша можно просто инициализировать хэш пустым списком:


Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: