use strict; use warnings; use Date::Calc qw( check_date ); my ( $year, $month, $day ) = ( 2006, 1, 30 ); printf "[$year, $month, $day] %s a valid date\n", check_date( $year, $month, $day ) ? 'is' : 'is not'; ( $year, $month, $day ) = ( 2006, 1, 32 ); printf "[$year, $month, $day] %s a valid date\n", check_date( $year, $month, $day ) ? 'is' : 'is not'; ( $year, $month, $day ) = ( 2006, 2, 29 ); printf "[$year, $month, $day] %s a valid date\n", check_date( $year, $month, $day ) ? 'is' : 'is not';