Я принимаю пользовательский ввод и печатаю форматированный вывод.
В моем формате строка% 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?