- Прежде всего всегда
use strict;
и use warnings;
в начале вашей программы и объявите все ваши переменные близко к их первому использованию. Это особенно относится к тем случаям, когда вы обращаетесь за помощью, поскольку обнаруживает множество простых ошибок, которые не сразу очевидны.
Лучше всего использовать printf
, если вы хотите обнулить любой вывод. Также нет необходимости извлекать поля даты для разделения переменных. Является ли результат, который вы показали, тот, который вы в конечном итоге хотите? Эта программа делает то же самое, что и код, который вы опубликовали.
use strict;
use warnings;
use DateTime;
my $myTimeStamp = DateTime->now->subtract( days => 1 );
printf "--> %04d %02d %02d %02d\n", map $myTimeStamp->$_, qw/year month day hour/;
OUTPUT
--> 2012 02 28 12