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.



2011-04-26 00:53:16 lykich

Thanks




Оставить комментарий:
Ваше Имя:
Email:
Антибот: *  
Ваш комментарий: