На самом деле, из-за перегруженности DateTime, вы можете просто сделать: my $ dur = $ today - $ date;

код находит разницу между сегодняшним днем ​​и фиксированной датой.

#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

use DateTime ();
use DateTime::Duration ();
use DateTime::Format::Strptime ();

my $date = "23/05-2022";

my $parser = DateTime::Format::Strptime->new(
    pattern     => '%d/%m-%Y',
    time_zone   => 'local',
    );

$date = $parser->parse_datetime($date);

my $today = DateTime->today(time_zone=>'local');

my $d = DateTime::Duration->new($today - $date);

print Dumper $d->delta_days;

Проблема в том, что только выходы -22 дня.

Если я сделаюprint Dumper $d; Я тоже вижу -130 месяцев.

$VAR1 = bless( {
                 'seconds' => 0,
                 'minutes' => 0,
                 'end_of_month' => 'preserve',
                 'nanoseconds' => 0,
                 'days' => -22,
                 'months' => -130
               }, 'DateTime::Duration' );

Как мне заставить его выводить результат в днях?

дела

print Dumper $d->delta_days + $d->delta_months*30;

не выглядит как элегантное решение.

Ответы на вопрос(2)

Ваш ответ на вопрос