当我实现下面的代码时,我得到了正确的日期:
10/05/2008
10/05/2009
Run Code Online (Sandbox Code Playgroud)
当我使用printf
而不是sprintf
,我得到以下内容:
10/05/200910/05/20081
1
Run Code Online (Sandbox Code Playgroud)
关于为何printf
打印拖尾的任何想法1
?
#!/usr/bin/perl
use strict; use warnings;
my ($from_date, $to_date) = to_from_dates();
print "$from_date\n";
print "$to_date\n";
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", $month+1, $day, $year+1899;
return ($from_date, $to_date);
}
Run Code Online (Sandbox Code Playgroud)
Axe*_*man 13
仅返回可打印的值.打印值并返回以告诉您输出成功.sprintf
printf
1
如果您只是s
从调用开头删除-es,那么您显示的输出正是我期望的输出.
sub to_from_dates {
my ($day, $month, $year) = (localtime)[3,4,5];
my $to_date=printf("%02d/%02d/%04d", $month+1, $day, $year+1900);
# printed: 10/05/2009 (no carriage return)
# $to_date = '1';
my $from_date=printf("%02d/%02d/%04d", $month+1, $day, $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 "1\n"; <- first line feed
# output: 10/05/200910/05/20081\n
print $to_date."\n"; # prints "1\n"; <- second line feed.
# output: 10/05/200910/05/20081\n1\n
Run Code Online (Sandbox Code Playgroud)
如果你使用printf,Perl打印该行并返回操作的结果,即1,然后你打印这个结果,这是来自的地方.你可以做任何一个printf
或print sprintf
归档时间: |
|
查看次数: |
748 次 |
最近记录: |