I would do the comparision numerically, because you are, in fact, comparing numbers.
Are you really really sure, that your $month does match /^\d{2}$/ ? Because your OPTION fields seem to contain a space before the number, and I am not really sure whether browsers will strip that space.
For me, your original code works without and problem and I am able without further problem to trigger any of the three conditions.
So I can only recommend really closely checking your input (for example by using the mentioned CGI::Untaint::date, and/or Time::Local). And also revisit your date/time math, as the month you associate with the number 1 will always have 31 days, and not 29 days, even though you cut it off there.
Personally, to make sure an entered date exists, I would use Time::Local, which throws an error for invalid day/month/year combinations.
perl -MHTTP::Daemon -MHTTP::Response -MLWP::Simple -e ' ; # The $d = new HTTP::Daemon and fork and getprint $d->url and exit;#spider ($c = $d->accept())->get_request(); $c->send_response( new #in the HTTP::Response(200,$_,$_,qq(Just another Perl hacker\n))); ' # web
In reply to Re: (3) Roll your own date validation
by Corion
in thread Roll your own date validation
by coldfingertips
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |