LINUX.ORG.RU

perl, array в hash


0

0

а можно как-нибудь в perl сделать что-то типа этого: %hash = ( "i1" => ("a1","a2","a3"), "i2" => ("1", "2") и т.п. как не странно, но такое что-то не получается :(

anonymous

Все получается, в 5ом, по крайней мере!
@a=("COOL","SUUX");
%hash=("E1" => @a , "E2" => ("HE-HE",":)"));
print $hash{"E1"}[0]; # Напишет COOL
print $hash{"E2"}[1],"\n" # Напишет :)

Вот и ВСе! ВСЕ работает! И вообще - Объясняй подробнее.

root_
()

Но этот пример хорош, если ты точно знешь сколько у тебя элементов,
а можно так( намного лучше)
@a=("COOL","SUXX");
%hash=("Elem" => \a@); #!!!!!!!!! Это ссылка на массив @a
print @{$hash{\'Elem\'}}, "/n" #Вот и вывод на экран!

root_
()

у меня perl --version говорит: 5.004_04 (из поставки debian 2.0) не работает как ты написал :( так он пустое место печатает: print $hash{"E1"}[0] а так первый элемент: print $hash{"E1"}

anonymous
()
Ответ на: комментарий от anonymous

А как Дела с ссылками Обстоят - Должно Работать!

root_
()

Скобки правильные рисовать надо: %hash=('key'=>['a','b','c'],'key2'=>['d','e','f']); Т. е. значением элемента хэша не может быть array, но может быть ссылка на array. Поэтому вместо круглых скобок (array constructor) нужно использовать либо квадратные (anonymous array reference constructor) или фигурные( тогда получится ссылка на хэш)

vitus
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.