我有一些代码如下:
my $d1 = $start_date;
$c->log->debug(Dumper($start_date));
my @date_range;
while($d1 <= $end_date){
push @date_range, $d1->day();
$d1->add(days => 1);
}
如何防止$ start_date发生变化?
答案 0 :(得分:2)
在perl中,对象是标量引用。当你做&#34;我的$ d1 = $ start_date&#34;你正在使$ d1引用一个引用与$ start_date相同的对象。
您可能想要修改$ start_date的副本。我不知道$ start_date是什么类,但看看该类是否提供了一个拷贝构造函数供你使用。
答案 1 :(得分:1)
您可以使用克隆方法:
my $date = new DateTime();
my $temp_date = $date->clone();
这将是一个副本,而不是一个参考。相反,如果您执行以下操作:
my $temp_date = $date;
然后两者都会引用同一个对象。