/(\w{3}) (\d+), (\d{4})(?: (\d+):(\d\d) )?/ #### my @date_parts = split m{[\s:,]+}, $date_string; if ( @date_parts == 6 ) { # date + time } elsif ( @date_parts == 3 ) { # date only } else { die "invalid date/time combo"; }