http://www.perlmonks.org?node_id=464477


in reply to Accounting Calendar using Date::Calc

If you don't mind installing a module, here is how to use DateTime::Event::Recurrence (I guessed the parameters from your example):

use DateTime::Event::Recurrence; my $cal = DateTime::Event::Recurrence->yearly( weeks => 5, week_start_day => 'su' ); my $dt = DateTime->new( year=> 2004 ); for ( 1 .. 10 ) { $dt = $cal->next( $dt ); print $dt, "\n" }
2004-02-01T00:00:00
2005-01-30T00:00:00
2006-01-29T00:00:00
2007-01-28T00:00:00
2008-01-27T00:00:00
2009-02-01T00:00:00
2010-01-31T00:00:00
2011-01-30T00:00:00
2012-01-29T00:00:00
2013-01-27T00:00:00