in reply to checking for valid date
There are a pile of Date manipulation modules available for Perl. The big hammer is Date::Manip. Possibly the way to validate your date string is first to chop it up assuming that the format is correct:
if ($yyyymmdd !~ /(\d{4})(\d\d)(\d\d)/) { print "Bad data string provided: $yyyymmdd\n"; return 0; } my ($year, $month, $day) = ($1, $2, $3); ...
You can then check that the year, month and day are within the expected ranges and finally validate the full date by using Date::Manip.
DWIM is Perl's answer to Gödel
In Section
Seekers of Perl Wisdom