|
Тема
|
Помощ и от мен / въпрос на Перл
|
|
Автор | Пeшo (Нерегистриран) |
Публикувано | 09.01.06 16:56 |
|
Може ли да ми кажете как е възможно това? Имаме 2 функции set_table и get_table (в голям CGI уебсайт):
sub set_table
{
my ($self, $table) = @_;
if (defined ($table))
{
$self->{_table} = $table;
}
}
sub get_table
{
my $self = shift;
return $self->{_table};
}
Съвсем нормални ми се струват. И ги извиквам така:
$self->set_table("clicks");
my $x = $self->get_table();
die "$x";
И чудо на чудесата: $x не е clicks, a друго име на таблица (което така и не знам къде го задават, ама явно някъде). А ако в set_table сложа die statement така:
$self->{_table} = $table;
my $x = $self->{_table};
die "$x";
$x си е clicks, както може да се очаква. Как може такова чудо да стане? Перл ми е страшна мъгла - ще ме уволнят. Помагайте сега.
| |
Тема
|
Re: П.С. дообяснявам
[re: Пeшo]
|
|
Автор | Пeшo (Нерегистриран) |
Публикувано | 09.01.06 17:16 |
|
Трудничко ще е да ми помогнете май, защото така написани нещата нямат много смисъл. Видях как задават първоначалното име на таблицата. Ето цялата set_table:
sub set_table
{
my ($self, $table) = @_;
if (defined ($table))
{
$self->{_table} = $table;
}
else
{
$self->{_table} = $self->{_table_desc}->{'table'};
}
}
А и конструктора:
#constructor
sub new
{
my ($class, $table_desc) = @_;
my $self = {
_table_desc => undef,
_values => undef,
_table => undef,
_dirty => 1,
};
$self->{_table_desc} = $table_desc;
bless $self, $class;
$self->set_table();
return $self;
}
Останалия код не виждам какво общо може да има. Това чудо ли е или някой има разумно обяснение?
| |
Тема
|
Re: П.С. дообяснявам
[re: Пeшo]
|
|
Автор |
sdg (shebang addict) |
Публикувано | 10.01.06 16:18 |
|
Сега остава да опишеш как създаваш нова инстанция
Подозирам, без доказателства, че set_table не получава $self като първи аргумент и $table като втори, а получава само $table като първи и единствен аргумент.
Можеш да изведеш стойностите на $self и $table във функцията set_table за да докажеш или отхвърлиш хипотезата.
RTFM!
--sdg
| |
Тема
|
Re: Помощ и от мен / въпрос на Перл
[re: Пeшo]
|
|
Автор | sh1tn (Нерегистриран) |
Публикувано | 11.01.06 11:40 |
|
v klasa vsichko e kakto sledva da e.
proveri kakvo ima v obekta (i dali e obekt vyobshte):
my $obj = TEST->new();
$obj->set_table("clicks");
my $x = $obj->get_table();
use Data::Dumper;
print Dumper($obj);
__END__
sledva da imash tozi STDOUT:
$VAR1 = bless( {
'_dirty' => 1,
'_table_desc' => {},
'_table' => 'clicks',
'_values' => undef
}, 'TEST' );
| |
|
|
|
|