PERL: БИБЛИОТЕКА ПРОГРАММИСТА


PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 165


> Смотри также---------------------------------------------------------------------------------------------

Функция keys описана вperlfunc(l). Также обращайтесь к рецепту 4.3.

5.14. Поиск самых распространенных значений

Проблема

Имеется сложная структура данных (например, массив или хэш). Требуется узнать, как часто в ней встречается каждый элемент массива (или ключ хэша). Допустим, в массиве содержатся сведения о транзакциях Web-сервера и вы хоти­те узнать, какой файл запрашивается чаще остальных. Или для хэша, в котором имя пользователя ассоциируется с количеством регистрации в системе, требует­ся определить наиболее распространенное количество регистрации.

Решение

Воспользуйтесь хэшем и подсчитайте, сколько раз встречается тот или иной эле­мент, ключ или значение:

%count = (),

foreach $element  (©array)  {


172   Глава 5 • Хэши

$count{$element}++ }

Комментарий

Каждый раз, когда возникает задача подсчета различных объектов, вероятно, стоит воспользоваться хэшем. В приведенном выше цикле foreach для каждого экземпляра $element значение $count{$element} увеличивается на 1.

> Смотри также---------------------------------------------------------------------------------------------

Рецепты 4.6 и 4.7.

5.15. Представление отношений между данными

Проблема

Требуется представить отношения между данными — например, отношения «предок/потомок» в генеалогическом дереве или «родительский/порожденный процесс» в таблице процессов. Задача тесно связана с представлением таблиц в реляционных базах данных (отношения между записями) и графов в компьютер­ных технологиях (отношения между узлами графа).

Решение

Воспользуйтесь хэшем.

Комментарий

Следующий хэш представляет часть г

%father = (    Cam

=>

Adam ,

Abel

=>

Adam ,

Seth

=>

Adam

Enoch

=>

Cain ,

Irad

=>

Enoch  ,

Mehujael

=>

Irad  ,

Methusael

=>

Mehujael

Lamech

=>

Methusael

Jabal

=>

Lamech ,

Jubal

=>

Lamech




- Начало -  - Назад -  - Вперед -