Попытка получить поддержку использования ООП в Perl. Моя проблема в том, что я устанавливаю переменную в классе, но значение теряется, когда я пытаюсь ее восстановить. Я уверен, что проблема вопиющая, но мне нужны дополнительные глаза.Perl - значение объекта не сохранено
Конструктор:
sub new
{
my ($class, $name) = @_;
my $self = {
_name => $name,
_times => []
};
bless ($self, $class);
return $self;
}
аксессор Метод/мутатором:
sub times {
my ($self) = shift;
if (@_) { @{$self->{_times}} = shift }
print "times size: " . @{$self->{_times}} . "\n";
return @{$self->{_times}};
}
вызова из основной программы:
$js->addRun($duration, $curStartTime);
print "Times size: " . @{$js->times()} . "\n";
соответствующий код из addRun() подпрограмма:
sub addRun {
my ($self, $duration, $runDateTime) = @_;
if (!defined($duration) || !defined($runDateTime)) { return 0; }
push(@{$self->{_times}},$duration);
}
Когда я запускаю этот код, он входит в подпрограмму addRun и толкает значение переменной _times. Затем я печатаю значение, вызывая accessor/mutator. Но у аксессора/мутатора есть своя команда печати, поэтому я могу проверить значение, прежде чем возвращать его.
Аксессор печатает правильное значение, но когда я печатаю то, что было возвращено, оно не определено. Я где-то перепутал мой синтаксис? Я просто идиот?
Благодаря
Пробовали ли вы с помощью Data :: Dumper на объект, чтобы увидеть, если значение действительно получить сохранен? – Ether
Включить «строгую» прагму – daotoad