为什么在Perl的printf输出后得到一个尾随’1’?
发布时间:2020-12-16 06:11:00 所属栏目:大数据 来源:网络整理
导读:当我实现下面的代码时,我得到了正确的日期: 10/05/200810/05/2009 当我使用printf而不是sprintf时,我得到以下内容: 10/05/200910/05/200811 关于为什么printf打印尾随1的任何想法? #!/usr/bin/perluse strict; use warnings;my ($from_date,$to_date) = t
当我实现下面的代码时,我得到了正确的日期:
10/05/2008 10/05/2009 当我使用printf而不是sprintf时,我得到以下内容: 10/05/200910/05/20081 1 关于为什么printf打印尾随1的任何想法? #!/usr/bin/perl use strict; use warnings; my ($from_date,$to_date) = to_from_dates(); print "$from_daten"; print "$to_daten"; sub to_from_dates { my ($day,$month,$year) = (localtime)[3,4,5]; my $to_date = sprintf "%02d/%02d/%04d",$month+1,$day,$year+1900; my $from_date = sprintf "%02d/%02d/%04d",$year+1899; return ($from_date,$to_date); } 解决方法
仅
sprintf 返回可打印值.
printf 打印该值并返回1以告诉您输出成功.
如果您只是从调用开头擦除s-es,那么您显示的输出就是我期望的输出. sub to_from_dates { my ($day,5]; my $to_date=printf("%02d/%02d/%04d",$year+1900); # printed: 10/05/2009 (no carriage return) # $to_date = '1'; my $from_date=printf("%02d/%02d/%04d",$year+1899); # printed: 10/05/2008 (no carriage return) # $from_date = '1'; return ($from_date,$to_date); } ($from_date,$to_date)=to_from_dates(); # returns ( 1,1 ) # output: 10/05/200910/05/2008 print $from_date."n"; # prints "1n"; <- first line feed # output: 10/05/200910/05/20081n print $to_date."n"; # prints "1n"; <- second line feed. # output: 10/05/200910/05/20081n1n (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |