Here's what I use...
[tt]
@DAYSINMONTH = (
[ 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ],
[ 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]
);
sub leap_year {
my ($year) = @_;
my $yy = int ($year/100);
if ($year > 0) {
return ((($year & 0x03) ==0) &&
(( $yy * 100 != $year) ||
(($yy & 0x03) == 0) ) ) ? 1 : 0;
} else {
return '';
}
}
sub check_date {
my ($day, $month, $year) = @_;
my $leap = leap_year($year);
return (($year >= 1) &&
($month >= 1) && ($month <= 12) &&
($day >= 1) &&
($day <= $DAYSINMONTH[$leap][$month])) ? $leap : -1;
}
[/tt]
-- Chris Hunt