use warnings; use strict; use DateTime; use DateTime::Event::Recurrence; my $set = DateTime::Event::Recurrence->monthly(days=>7); my @list = $set->as_list( start => DateTime->new( year=>2018 ), end => DateTime->last_day_of_month( year=>2018, month=>12 ) ); print $_->ymd,"\n" for @list; __END__ 2018-01-07 2018-02-07 2018-03-07 2018-04-07 2018-05-07 2018-06-07 2018-07-07 2018-08-07 2018-09-07 2018-10-07 2018-11-07 2018-12-07