use strict; use warnings; use Date::Calc qw(check_date); my $date = "9999/12/11"; my($year,$month,$day) = $date =~ /(\d+)\/(\d+)\/(\d+)/; print "$year/$month/$day is "; if(check_date($year,$month,$day) && $year >=1753 && $year <= 9999) { print "valid"; } else { print "not valid\n"; }