use POSIX qw( strftime ); use Time::Local qw( timelocal timelocal_nocheck ); my $start = timelocal(0, 0, 0, (localtime)[3,4,5]); # Today my $end = timelocal(0, 0, 0, 1, 3-1, 2006); # March 1st, 2006 my $date = $start; while ($date <= $end) { my @date = localtime($date); my @tomorrow = @date; $tomorrow[3]++; $date = timelocal_nocheck(@tomorrow); my $wday = $date[6]; next if $wday == 0 || $wday == 6; # Weekend # Date in locale-specific format. print(strftime('%x', @date), "\n"); }