if (check_date($year,$month,$day)) #### 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'; #### [2006, 1, 30] is a valid date [2006, 1, 32] is not a valid date [2006, 2, 29] is not a valid date