each
Синтаксис
each HASH
Описание
При вызове этого оператора в списочном контексте он возвращает двухэлементный массив,
содержащий ключ и значение очередного элемента хэш-массива, что позволяет легко организовать
итерационный просмотр содержимого подобных структур данных.
При вызове в скалярном контексте оператор возвращает только ключ следующего элемента хэш-массива.
ПРИМЕЧАНИЕ
Ключи могут иметь значения, равные "0" или "", которые соответствуют логической переменной FALSE;
поэтому рекомендуется избегать использования конструкций, подобных while {}.
Порядок, в котором перебираются ключи, в общем-то случаен.
После того как просмотрен весь хэш-массив, в списочном контексте этот оператор возвращает пустой массив,
который при выполнении присвоения элементов формирует нулевое значение, а в скалярном контексте
возвращается значение undef.
Последующий вызов each после завершения просмотра приведет к началу нового итерационного цикла.
Следует отметить, что для каждого хэш-массива задается свой собственный уникальный итератор,
который совместно используется всеми операторами each,
keys и
values в программе. Сброс итератора может быть
осуществлен путем считывания всех элементов хэш-массива или путем оценки значения keys HASH либо values HASH.
ПРИМЕЧАНИЕ
Если в процессе итерационного просмотра хэш-массива вы добавляете или удаляете элементы,
вы можете нарушить работу итератора и пропустить некоторые элементы или считать один и тот же дважды.
Поэтому рекомендуется от подобных процедур воздержаться.
В приведенном ниже примере производится распечатка переменных окружения аналогично программе printenv.
while (($key, $value) = each %ENV) {
print "$key = $value\n";
}
Полезную информацию по вопросам работы с хэш-массивами вы найдете в описании
keys и values.
Thanks
2023-11-16 22:30:18 Svetlana Thank you very useful information
Оставить комментарий:
|
|