В Perl существует около десятка способов обработки дат. Однако если вы знаете формат строки даты, возможно, нет причин вызывать модуль datetime:
$dt3 =~ /^(\d+)-(\d+)-(\d+)/;
print "This is my date:${1}${2}${3}\n";
Я не знаком с DateTime, но был бы удивлен, если бы не было способа отформатировать данные при их отображении.
Я лично предпочитаю Time :: Piece и Time :: Seconds для этих вещей. Эти модули были частью стандартной установки Perl с 5.10. Кроме того, я нахожу интерфейс довольно простым и чистым.
use Time::Piece;
use Time::Seconds;
my $time = localtime;
$time -= ONE_DAY;
print "This is my date:" . $time->ymd("");
По какой-то причине вы не можете сказать $time = localtime - ONE_DAY;
в одной строке. Я думаю, вам нужно сначала создать объект Time::Piece
, прежде чем вы сможете манипулировать им с помощью констант Time::Second
.