http://www.perlmonks.org?node_id=564614


in reply to checking for valid date

I'll do this in two steps. First I'll check that the date is indeed eight digits, then I'll check if it refers to a valid date with the Date::Manip module (so this will fail with historical dates using the Julian calendar).

perl -we 'use Date::Manip; sub valid_yyyymmdd { $_[0] =~ /^(\d{8})$/ a +nd ParseDate($1) and 1; } valid_yyyymmdd($_) and print "$_\n" for qw" +20060630 20060631 20060730 20060731 20060732 2006.07.30 06.07.31";'
Output:
20060630 20060730 20060731