Forum Webscript.Ru
Программирование => Perl => Тема начата: kosm от 09 Сентября 2003, 18:14:37
-
Ребят, подскажите что не так делаю?
Задача положить в массив хеши, и потом соответственно их отсель вытащить.
Кладу так:
push (@Log, %data);
Вытаскиваю так:
%data = $Log[$i];
Что я не так делаю?
-
push @log, \\%data;
...
%data = %{$log[$i]};
а лучше так:
push @log, {%data};
...
%data = %{$log[$i]};
-
а можно и вытаскивать только нужные данные по ключам:
$val = $log[$i]->{$key};
где: $key - ключ, $val - значение
-
kosm
Если ты хочешь, что бы в каждой ячейке массива был свой массив, то так не получится, все ячейки массива %data, становятся отдельными ячейками массива @log, и соответсвенно когда ты выбираешь одну ячейку @log ты получаешь одну ячейку %data
если уж так надо, то:
$mass = join(\'|\',%data);
push (@Log, $mass);
%data = split(/\\|/,$Log[$i]);
т.е. массив преобразуешь в скаляр, а потом обратно
-
kosm
Чтобы лучше понять, как что делается, почитай
perldoc perllol
perldoc perlref
-
Phoinix:
если уж так надо, то:
$mass = join(\'|\',%data);
push (@Log, $mass);
%data = split(/\\|/,$Log[$i]);
т.е. массив преобразуешь в скаляр, а потом обратно
интересно, что будет если вдруг в хэше %data уже есть символы \'|\' ? :)
-
ondr
символ \'|\' - для примера
-
Огромное всем спасибо! Теперь все понятно...
Phoinix
Ага, как раз надо было что бы в кажной ячейке массива был свой хеш.
СПАСИБО ЕЩЕ РАЗ ВСЕМ!!!