in reply to Calculating Number Of Pay Periods

Here's yet another way to do it, using DateTime::Set for recurring events. It's also possible to modify the "recurrence" callback to shift the exact day if, for example, paydays can't be on a weekend, and there are even modules that calculate holidays for different regions.

use warnings; use strict; use DateTime; use DateTime::Set; my $paydays = DateTime::Set->from_recurrence( start => DateTime->now, before => DateTime->new( year=>2019, month=>7, day=>1 ), recurrence => sub { my $dt = shift; return $dt->day < 15 ? $dt->truncate(to=>'month')->add(days=>14 ) : $dt->truncate(to=>'month')->add(months=>1) }, ); print "paydays: ",$paydays->count,"\n"; # - or - my $iter = $paydays->iterator; while ( my $dt = $iter->next ) { print $dt->ymd, "\n"; } __END__ paydays: 41 2017-10-15 2017-11-01 2017-11-15 ... 2019-05-15 2019-06-01 2019-06-15