sub promptTill{{ local $\; print "$_[0]: "; chomp( my $input = ); redo unless $input =~ $_[1]; return $input }} print promptTill( 'Yes/No', qr[^(?:y(?:e(?:s)?)?|n(?:o)?)$]i );;