$last_date = ; chomp $last_date; for (my $i = $last_date; $i <= $bill_date; $i = AddDate( $i, 1)) { push @letter_dates, $i; printf "Last date %s Bill date %s Data %s\n", $last_date, $bill_date, $i; } sub AddDate { my $date = $_[0]; my $x = $_[1]; # set this. my $day = 24*60*60; my $xdays = $x * $day; my @t = (localtime(str2time($date) + $xdays))[5,4,3]; $t[0] += 1900; # localtime returns years since 1900. $t[1] += 1; # localtime returns month in range 0..11. $return_date = sprintf "%04d%02d%02d", $t[0], $t[1], $t[2]; return $return_date; }