Forum Webscript.Ru
Программирование => Perl => Тема начата: 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}.
эти вообще на печать ничего не выводят, но в программе используются, что-то в них сравнивается, непонятно что...
-
perldoc perldsc
-
Спасибо, конечно...
Но вот я удивляюсь, знающему человеку ответить - 10 минут времени, а мне в доках сутки копаться надо, чтобы найти ту порцию инфы, которая нужна :(
-
это, как бы, основы.
если вы их не знаете, то просто слишком много рассказывать придется.
если я скажу, что это ключ ссылки на хеш, оно вам поможет?
-
arto:
это, как бы, основы.
если вы их не знаете, то просто слишком много рассказывать придется.
Полностью согласен :-)
-
arto:
если я скажу, что это ключ ссылки на хеш, оно вам поможет?
ну если объянсите, что такое ключ, но вполне)
если я правильно понял, у меня есть ссылка на двумерный массив) Меня смущает, что все эти {root}, {value} и т.п. нигде не объявлены, и непонятно, откуда берутся в них значения. Если, кстати, подставить в фигурные скобки полную абракадабру, то никакой ошибки не возникает, откуда можно предположить, что эти конструкции формируются динамически... Вопрос только, как:) И почему в них есть пустые значения)
доки я почитаю, разумеется. Но если можно сжато объяснить, будет классно)
-
очень напоминает
таблица->[tr]->[td]->{atribute}
задание свойств таблицы из кода. очень похоже на это
а по поводу:
Gekt0r:
выводится ссылка на хэш (типа HASH(0x9c2d728) ).
советую Data:: Dumper
http://search.cpan.org/~ilyam/Data-Dumper-2.121/Dumper.pm
-
У тебя в конце идет идет ссылка на hash (именованный массив).
my %HASH;
$HASH{value} = "var1";
$HASH{name} = "perem";
print "$HASH{name}=$HASH{value} ($HASH{Attr})";
Выдаст "perem=var1 ()"
Ошибки не будет, т.к. при обращении к несуществующему элементу хеша возвращается пустое значение.