sub getpass { my $prompt = shift; local $| = 1; print "$prompt: "; eval { require Term::ReadKey }; my $haveterm = !$@; Term::ReadKey::ReadMode(2) if $haveterm; # turn on noecho my $pass = ; chomp $pass; Term::ReadKey::ReadMode(0) if $haveterm; # restore print "\n"; return $pass; }