PERL - статьи

       

Хэши массивов


Хэши, состоящие из массивов, позволяют разбивать данные, индексированные

числовым значением, на записи. В следующем примере мы объявляем хэш массивов в одном предложении:

%hasn = (

fruits => ["apples", "oranges"],

vegetables => ["corn", "peas", "turnips"],

meat => ["chicken", "ham"],

);

print $hash{fruits}[0];

Обратите внимание, что для конструкций вида [...]{...},

как и для рассматриваемых ранее конструкций

вида {...}{...} и

[ ][[ ], между парами скобок неявно

подставляется оператор-стрелка -> разыменования ссылок.



Создание хэша массивов на лету

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

ключом ссылки на массивы, созданные генератором анонимных массивов:

%hash{fruits} = ["apples", "oranges"];

%hash{vegetables} = ["corn", "peas", "turnips"];

%hash{meat} = ["chicken", "ham"];

print $hash{fruits}[0];

Если вы предпочитаете другой вариант, можете воспользоваться функцией push

и контекстно-чувствительной процедурой автооживления ссылок (autovivification).

push @{%hash{fruits}}, "apples", "oranges";

push @{%hash{vegetables}}, "corn", "peas", "turnips";

push @{%hash{meat}}, "chicken", "ham";

Доступ к элементам хэша массивов

Вы всегда можете получить доступ к отдельному элементу данных, хранимому в

хэше массивов, указав ключ и индекс:

%hasn = (

fruits => ["apples", "oranges"],

vegetables => ["corn", "peas", "turnips"],

meat => ["chicken", "ham"],

);

print $hash{fruits}[0];

В следующем примере мы полностью выводим отсортированный по значениям

ключа хэш массивов, используя функцию

join для преобразования массивов в текстовые строки:

%hasn = (

fruits => ["apples", "oranges"],

vegetables => ["corn", "peas", "turnips"],

meat => ["chicken", "ham"],

);

for $key(sort keys %hash){

print "$key\t[", join(", ", @{$hash{$key}}), "]\n";

}



Содержание раздела