use strict; use warnings; use Time::Piece; my $format = "%d-%m-%Y"; while (my $date = ) { chomp $date; printf("%s %s legitimate\n", $date, (verify_date($date, $format) ? "is" : "is not"), ); } sub verify_date { my ($date_in, $format) = @_; my $t = Time::Piece->strptime($date_in, $format); my $date_out = $t->strftime($format); return $date_in eq $date_out ? 1 : 0; } __DATA__ 28-02-2004 29-02-2004 30-02-2004 28-02-2006 29-02-2006 30-02-2006