Из-за чистой силы POSIX :: mktime вы можете сделать следующее:
use POSIX qw<mktime strftime>;
my ( $month, $day, $year ) = ( 8, 16, 2008 );
my $end_date = mktime( 0, 0, 0, 1, 2 - 1, 2009 - 1900 );
while ( 1 ) {
my $date = mktime( 0, 0, 0, $day++, $month - 1, $year - 1900 );
push @date_range, strftime( '%x', localtime $date );
last if $date >= $end_date;
}
С mktime( 0, 0, 0, 500, 0, 108 )
имеет значение. Но тогда это также относится к mktime( 0, 0, 0, 0, 2, x )
в последний день февраля любого года.