sub leap { use Time::Local; my ($mo,$yr)=@_; #assumes month in 0-11 form ($yr++, $mo=0) if ++$mo>11; return (localtime(timelocal(0,0,0,1,$mo,$yr)-86400))[3]; }