+sub ask {
+ my ($prompt, %arg) = @_;
+ my $valid_re = $arg{valid_re} || ""; # "" matches anything
+ my $default = $arg{default};
+ my $resp;
+ my $i = 0;
+ while ($i++ < 10) {
+ $resp = $term->readline($prompt);
+ if (!defined $resp) { # EOF
+ print "\n";
+ return defined $default ? $default : undef;
+ }
+ if ($resp eq '' and defined $default) {
+ return $default;
+ }
+ if ($resp =~ /$valid_re/) {
+ return $resp;
+ }
+ }
+ return undef;
+}
+