Я очень часто смотрю на небо,наверное по этому так часто спотыкаюсь...
Вопрос в том - какую лучше всего использовать для этого структуру данных в языке Perl?
Пока все мысли не идут дальше hash of arrays, в которых данные будут ключами к очередной hash of arrays.
Есть ли что проще или я изобретаю "велосипед", где он уже существует?
www.cs.cf.ac.uk/Dave/PERL/node63.html
Осталось теперь только все это связать с тем что уже есть
Пока, если делать запрос простым print (%{$database[0]}->{"Time"}); , то выводится "ARRAY(0x95a3348)".
А если пытаться вылодить через Dumper, то оно_же выглядит как
$VAR6 = [
'-3.440559e-06',
'5.091846e-04',
'-2.146339e-02',
'-3.694172e-01'
];
*ССылки
*Структуры данных: хэш, массив
*Срезы
*Сложные структуры данных.
%{$database[0]}->{"Time"} --- здесь написан какой то бред. опиши структуру нормально, что где храниться.
И смотря что хочется вывести.
-------------------------------------------------
Stage#1
Программа открывает фаил и считывает данные по столбикам.
Для каждого толбика (всем элементам столбика) идет цикл, который:
1) создает 2 хеша, в каждом из которых 3 "категории" = "Time", "Size","Bitrate".
2) В каждую из категорий записывается массив из 4 цифр
3) имя для этих самыx хешей выбирается в зависимости от столбика, расположения itd....
то есть в цикле есть такая запись для формирования хеша:
%{$z}->{$y}=[ @values ];
(гдe $z - содержит нужное на данном этапе имя хеша , $y - содержит имя категории = "Time", "Size" or "Bitrate"), a @values = массив из 4 цифр)
На этом этапе все формируется с правильными именами.
Если попробовать сделать
print "%cropMJPG"; # по конкретному имени хеша
получаю: (те самые три категории, но в них почему-то не массивы из 4 цифр, а что-то страшное судя по числам в скобочках)
TimeARRAY(0x925c118)SizeARRAY(0x925c168)BitrateARRAY(0x925c208)
--------------------------------------------------
Stage#2
после того, как все хеши сформированы из них формируется массив (идея сего действа такая > @database = ( \%recordOne, \%recordTwo )
вот как это делаю
for($j=0;$j<@all_filters;$j++)
{
$zz=$all_filters[$j]; # здесь в мaссиве хранятся имена хешей
push(@database,\%$zz);
}
______________________________
вот теперь использую
%{$database[0]}->{"Time"}
По идее она должна вывести то, что хранится в хеше, расположенном в $database[0], в категории "Time".
Но она вместо массива из 4 цифр выдает ARRAY(0x95a3348)
---------------------------------------
Чтобы добраться до array , который сидит в одной из категорий внутри hash надо применять вот такую конструкцию:
(%{$name}->{"Time"}[$kk])
(где в $name - сидит имя хеша, "Time " нужная категория, a $kk - нoмер нужной позиции и array)