Я очень часто смотрю на небо,наверное по этому так часто спотыкаюсь...
Теперь другой вопрос.. Как из такой структуры вытаскивать отдельные значения.
Пока, если делать запрос простым print (%{$database[0]}->{"Time"}); , то выводится "ARRAY(0x95a3348)". А если пытаться вылодить через Dumper, то оно_же выглядит как $VAR6 = [ '-3.440559e-06', '5.091846e-04', '-2.146339e-02', '-3.694172e-01' ];
Программа открывает фаил и считывает данные по столбикам. Для каждого толбика (всем элементам столбика) идет цикл, который: 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)
-
-
01.06.2010 в 10:17-
-
04.06.2010 в 18:56-
-
04.06.2010 в 21:15-
-
07.06.2010 в 06:23-
-
07.06.2010 в 06:46www.cs.cf.ac.uk/Dave/PERL/node63.html
Осталось теперь только все это связать с тем что уже есть
-
-
07.06.2010 в 19:29-
-
07.06.2010 в 19:55Пока, если делать запрос простым print (%{$database[0]}->{"Time"}); , то выводится "ARRAY(0x95a3348)".
А если пытаться вылодить через Dumper, то оно_же выглядит как
$VAR6 = [
'-3.440559e-06',
'5.091846e-04',
'-2.146339e-02',
'-3.694172e-01'
];
-
-
07.06.2010 в 22:04*ССылки
*Структуры данных: хэш, массив
*Срезы
*Сложные структуры данных.
%{$database[0]}->{"Time"} --- здесь написан какой то бред. опиши структуру нормально, что где храниться.
И смотря что хочется вывести.
-
-
07.06.2010 в 22:29-------------------------------------------------
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)
---------------------------------------
-
-
10.06.2010 в 16:57Чтобы добраться до array , который сидит в одной из категорий внутри hash надо применять вот такую конструкцию:
(%{$name}->{"Time"}[$kk])
(где в $name - сидит имя хеша, "Time " нужная категория, a $kk - нoмер нужной позиции и array)