用PERL求前一天的日期问题?

用PERL求前一天的日期问题?

我在做一个自动备份程式,我想实现定时把前一天的日志文件备份,在取前一天的日期问题上百思不得其解?如下。
sub yesterday_a {
my @date_tmp=localtime(time-86400);
my $yesterday_w = printf("%04d-%02d-%02d",$date_tmp[5]+1900,$date_tmp[4]+1,$date_tmp[3]);       
chop $yesterday_w;
       
return $yesterday_w;       
}

my $y_date = &yesterday_a;
print "$y_date 2 \n";
print "$y_date \n";

结果为:

% perl test_date.pl
2008-03-10 2
2
%
请问为什么第二次print 时$y_date就为空了???
把printf改为sprintf就好了
因为sprintf会返回所要请求的字符串,而不是像printf那样,将它输出
多谢!
自己把自己给绕进去了


QUOTE:
原帖由 newfresh 于 2008-3-11 17:21 发表
把printf改为sprintf就好了
因为sprintf会返回所要请求的字符串,而不是像printf那样,将它输出

那怎样第一次能输出的?


QUOTE:
原帖由 liang573728 于 2008-3-12 09:47 发表

那怎样第一次能输出的?

第一次也不是 print输出的
而是 printf输出的日期
print 输出了 “2”
合在一起就迷惑
哈哈