zhukovia
Зарегистрирован: 22.03.2003 Сообщения: 17 Откуда: Красноярск
|
Добавлено: Чт Фев 05 2004 15:05 Заголовок сообщения: Perl:хеш массивов массивов в подпрограме |
|
|
Вообще задача следующая. Нужно динамически создавать меню, состоящее из пунктов меню и пунктов субменю (file/new,save,delete | edit/copy,paste,delete). Для этого я создал таблицу в MySQL (ind_g(char15),nn(int),ind(char15),name(char35),link(char25)) ind_g - имя группы или название пункта меню, nn - номер субменю (у пункта меню номер 0), ind - имя пункта субменю (у пункта меню имя совпадает с ind_g), name - название пункта (то что выводиться на экран), link - ссылка с этого пункта. Для хранения всего этого создается хеш массивов @s_menu[nn]=(ind,name,link), $hash{$ind_g}[@s_menu].
Далее в подпрограме нужно вытащить из хеша ind_g, создать пункт меню, перебрать все попорядку все элементы @s_menu, создать субменю и т.д.
Я сделал примерно следующее.
----------main.pl-begin
use mod1;
@arr1=(1,2...);
...
@arr=(@arr1,@arr2...);
$hash{name}=[@arr];
mod::s2();
...
----------main.pl-end
----------mod1.pm-begin
...
sub s2{
while (($key,$value) each %main::hash)
{
print "$$value[0][1]"; #Здесь все выводится
while ($$value)
{
#А вот тут выборки не происходит
}}}
...
----------mod1.pm-end
Может я что не так делаю? Пробовал передовать в подпрограмму хеш s2(%hash), а потом использовать его sub s2(\%) {%hash_sub=$_[0]} ничего не получилось.
Подскажите как сделать в подпограме выборку из массива @arr, массивов @arr1,@arr2... с последущим обращением к содержимому этих массивов (@arr1,@arr2...).
Заранее спасибо. |
|