Это должно помочь вам начать. Возможно, вы захотите добавить некоторую проверку ввода (т. Е. Убедиться, что элементы @ARGV
отформатированы правильно и первое представляет дату, меньшую второго, и т. Д. И т. Д.).
use strict;
use warnings;
use DateTime;
unless(@ARGV==2)
{
print "Usage: myperlscript first_date last_date\n";
exit(1);
}
my ($first_date,$last_date)=@ARGV;
my $date=DateTime->new(
{
year=>substr($first_date,0,4),
month=>substr($first_date,4,2),
day=>substr($first_date,6,2)
});
while($date->ymd('') le $last_date)
{
print $date->ymd('') . "\n";
$date->add(days=>1);
}
ETA: Если неясно, что происходит, мы создаем $date
как DateTime
объект, анализируя год, месяц и день, которые были заданы в $first_date
. Затем мы продолжаем печатать год, месяц и день без разделителей ($date->ymd('')
) и увеличиваем $date
на один день, пока не достигнем $last_date
.