use 5.010; use warnings; use strict; use DateTime::Event::ICal; use DateTime; my $dt = DateTime::Event::ICal->recur( dtstart => DateTime->now, freq => 'monthly', byday => [ "-1fr" ], byhour => [ 15 ], byminute => [ 0 ], bysecond => [ 0 ], ); say $dt->next->epoch();