use DateTime; my $dt = DateTime->now->truncate(to=>'month'); for (1..24) { my $last = $dt->clone->add(months=>1)->subtract(days=>1); print $dt->ymd," to ",$last->ymd,"\n"; $dt->subtract(months=>1); } __END__ 2017-06-01 to 2017-06-30 2017-05-01 to 2017-05-31 2017-04-01 to 2017-04-30 ... etc.