$now = time; $hour = (localtime $now)[2]; $now += (12 - $hour)*60*60; # offset to noon-hour so DST doesn't fry us $dow = (localtime $now)[6]; $now += (($dow < 4 ? -2 : 5) - $dow)*24*60*60; ($y, $m, $d) = (localtime $now)[5,4,3]; $file = sprintf "%d_%d_%d.html", $m+1, $d, $y+1900;