my ($sec,$min,$hour) = qw( 0 0 12 ); my ($mday, $mon, $year) = qw(11 5 2007); $mon--; # because that's how unix/C treat the month value eval { my $dummy = timelocal($sec,$min,$hour,$mday,$mon,$year); }; if (my $err = $@) { print "This is an invalid date."; } else { print "Yay"; };