Yeah, as the others have said, you're probably better off going to CPAN for something as complicated as date checking can be.
On the style front, you might consider using Perl's unpack function, instead of substr.
# you could use this:
my ($month, $day, $year) = unpack('a4 a2 a2', $date);
# instead of this:
my $year = substr($date,0,4);
my $month = substr($date,4,2);
my $day = substr($date,6,2);
...if you wanted to. There's nothing wrong with using substr
here (other than that it takes a lot of typing...) - just pointing out an alternative that you might want to look into.