sub get_date { my $prompt = shift; while (1) { print "$prompt (YYYYMMDD): "; my $date = <>; chomp $date; if ($date !~ (/\d{8}/)) { print "ERROR: Invalid format!\n"; } else { return $date; } } } my $today = ... my $start_date; while (1) { $start_date = get_date("Please enter the collection start date"); if ($start_date < 18960101) { print "ERROR: Data prior to 18960101 is not available!\n"; } elsif ($start_date > $today) { print "ERROR: Start date is in the future!\n"; } else { last; } } # ditto for $end_date