use Date::Calc qw/ check_date Localtime /; my $date = shift @ARGV; my @date = split '-', ( $date || '2002-02-31' ); # Naturally, this date is invalid unless (check_date(@date)) { carp( 'Invalid date supplied from command line - Overriding with current date' ) if $date; @date = (Localtime)[0..2]; $date = join '-', @date; }