Попытка освоить использование ООП в 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. Затем я печатаю значение, вызывая метод доступа / мутатор. Но аксессор / мутатор имеет собственную команду печати, поэтому я могу проверить значение, прежде чем его вернуть.
Метод доступа печатает правильное значение, но когда я печатаю то, что было возвращено, оно не определено. Мой синтаксис где-то испорчен? Я просто идиот?
Спасибо