Все мои переменные объявлены в формате my $var
.
В моей программе я вызываю mainMethod()
Затем в mainMethod
я определяю переменную DateTime и затем передаю ее отдельный вспомогательный метод 3 раза .:
my ($day,$month,$year)=(localtime)[3,4,5];
my $dt = DateTime->new(
year => $year,
month => 2 + $month,
day => 1,
hour => 8,
minute => 30,
time_zone => 'America/New_York'
);
helper($dt, $year, $month, $day,);
helper($dt,$year, $month, $day,);
helper($dt,$year, $month, $day,);
В helper
Я начинаю с:
my $date = $_[0];
my ($year, $month, $day) = ($_[1],$_[2],$_[3]);
Этот метод делает много разных вещей, но единственные изменения, которые я делаю в $date
is $date = $date->add(days => (3 - $date->day_of_week) % 7);
Проблема в том, что изменения, которые я делаю $date
в моем вспомогательном методе, сохраняются при каждом вызове метода из mainMethod
Примечание: я ничего не возвращаю
Например, если вместо $dt
было 5
, а helper
было $date + 2
, я бы получил
helper($dt) #output: 7
helper($dt) #output: 9
helper($dt) #output: 11
вместо ожидаемых 5 для каждого ответа.
Есть ли какой-то шаг, который мне не хватает для сброса этих переменных в конце метода?