if (!($y % 4) and ($y % 100 or !($y % 400))) { ... } #### use Time::Local; my $noon = timelocal(0,0,12, (localtime)[3,4,5]); my ($d,$m,$y) = (localtime($noon - 86400))[3,4,5];