my $date_string = sprintf('%02d%02d%02d', $year-1900, $month, $day); #### use Time::Local qw( timegm ); my @start_date = ( $start_year, $start_month, $start_day ); my @end_date = ( $end_year, $end_month, $end_day ); my $start_date = timegm( 0,0,0, $start_day, $start_month-1, $start_year ); my $end_date = timegm( 0,0,0, $end_day, $end_month-1, $end_year ); for (my $date=$start_date; $date<=$end_date; $date+=24*60*60) { my ($year, $month, $day) = (gmtime($date))[5,4,3]; $year += 1900; $month += 1; my $date_string = sprintf('%02d%02d%02d', $year-1900, $month, $day); ... }