【发布时间】:2019-01-05 10:52:04
【问题描述】:
我正在接受用户输入并打印格式化输出。
在我的格式字符串中,当我提供日期时,%s 返回它处于无效上下文中。由于它只是打印,我假设字符串足以显示日期。
这是我的代码
use strict;
use warnings;
use Time::Piece;
print "Enter item number: ";
chomp( my $item_number = <STDIN> );
print "Enter unit price: ";
chomp( my $unit_price = <STDIN> );
print "Enter purchase date (mm/dd/yyyy): ";
chomp( my $purchase_date = <STDIN> );
my $tp = Time::Piece->strptime( $purchase_date, '%m/%d/%Y' );
print "\n";
print "Item\t Unit\t Purchase\n\t Price\t Date\n";
sprintf( "%-3d\t%.2f\t%s\n", $item_number, $unit_price, $tp );
printf("_______________________________________\n");
似乎 %s 在 sprintf 中总是有一个无效的上下文。 如果我这样做了
sprintf( "%s", $tp );
我得到完全相同的警告。 我将如何在我拥有的 sprintf 格式的情况下打印日期?或者 perl 中是否有比 sprintf 更好的方法?
【问题讨论】:
-
我没有意识到 sprintf 只是格式化没有打印。