use Time::Local; my $noon = timelocal(0,0,12, (localtime)[3,4,5]); my ($d,$m,$y) = (localtime($noon - 86400))[3,4,5];