Forum Webscript.Ru

Программирование => Perl => Тема начата: Gekt0r от 05 Февраля 2008, 16:15:18

Название: Подскажите с кодом
Отправлено: Gekt0r от 05 Февраля 2008, 16:15:18
Всем привет, сейчас разбираю код, написанный другим человеком, своих знаний не хватает, в инете тоже толком ничего не нашел, очень нужна помощь...

в процессе работы программа работает с данными в нескольких двумерных массивах. Один из них - $table.

Там есть, к примеру, такое просваивание:
$table->[1]->[1]->{value} = чему-то там;
Я не понимаю, что означает это {value}, зачем оно нужно и что это вообще... При выводе на печать выводится значение ячейки таблицы. При выводе без этого {value} выводится ссылка на хэш (типа HASH(0x9c2d728) ). Интуитивно понятно, что эти фигурные скобки - какая-то операция типа обращения к методу. Но можете объяснить, как там точно все происходит?
Есть похожие обращения, типа $table->[1]->[1]->{root}, $table->[1]->[1]->{span}, $table->[1]->[1]->{no_display}, $table->[1]->[1]->{colspan}.

эти вообще на печать ничего не выводят, но в программе используются, что-то в них сравнивается, непонятно что...
Название: Подскажите с кодом
Отправлено: arto от 05 Февраля 2008, 16:45:05
perldoc perldsc
Название: Подскажите с кодом
Отправлено: Gekt0r от 05 Февраля 2008, 17:39:06
Спасибо, конечно...
Но вот я удивляюсь, знающему человеку ответить - 10 минут времени, а мне в доках сутки копаться надо, чтобы найти ту порцию инфы, которая нужна :(
Название: Подскажите с кодом
Отправлено: arto от 05 Февраля 2008, 18:17:29
это, как бы, основы.
если вы их не знаете, то просто слишком много рассказывать придется.

если я скажу, что это ключ ссылки на хеш, оно вам поможет?
Название: Подскажите с кодом
Отправлено: It-sys от 06 Февраля 2008, 11:01:26
Цитировать
arto:
это, как бы, основы.
если вы их не знаете, то просто слишком много рассказывать придется.


Полностью согласен :-)
Название: Подскажите с кодом
Отправлено: Gekt0r от 06 Февраля 2008, 11:34:59
Цитировать
arto:
если я скажу, что это ключ ссылки на хеш, оно вам поможет?

ну если объянсите, что такое ключ, но вполне)
если я правильно понял, у меня есть ссылка на двумерный массив) Меня смущает, что все эти {root}, {value} и т.п. нигде не объявлены, и непонятно, откуда берутся в них значения. Если, кстати, подставить в фигурные скобки полную абракадабру, то никакой ошибки не возникает, откуда можно предположить, что эти конструкции формируются динамически... Вопрос только, как:) И почему в них есть пустые значения)
доки я почитаю, разумеется. Но если можно сжато объяснить, будет классно)
Название: Подскажите с кодом
Отправлено: ravshaniy от 06 Февраля 2008, 11:43:31
очень напоминает

таблица->[tr]->[td]->{atribute}

задание свойств таблицы из кода. очень похоже на это

а по поводу:
Цитировать
Gekt0r:
выводится ссылка на хэш (типа HASH(0x9c2d728) ).

советую Data:: Dumper
http://search.cpan.org/~ilyam/Data-Dumper-2.121/Dumper.pm
Название: Подскажите с кодом
Отправлено: It-sys от 08 Февраля 2008, 10:27:57
У тебя в конце идет идет ссылка на hash (именованный массив).


my %HASH;
$HASH{value} = "var1";
$HASH{name} = "perem";

print "$HASH{name}=$HASH{value} ($HASH{Attr})";


Выдаст "perem=var1 ()"

Ошибки не будет, т.к. при обращении к несуществующему элементу хеша возвращается пустое значение.