use IO::Prompt::Hooked; my $file = prompt ( message => 'Enter your filename ("A" to abort):', tries => 10, validate => sub { -e -f shift }, escape => sub { shift =~ /^A$/ && die "Aborting." }, error => sub { die "Excessive tries; Aborting." unless $_[1]; return "[$_[0]]: Invalid filename. Please re-enter.\n\n" }, ); print "\n*** You chose '$file'. ***\n";