in reply to Term::ReadPassword::Win32 kills STDIN
my $pword = get_pword( "Enter password" ); print "Password is '$pword'\n"; sub get_pword { use Term::ReadKey; my ($prompt) = shift; my $pword; my $key; local $| = 1; # Turn off STDOUT buffering for immediate response print "$prompt: "; ReadMode 4; # Change to Raw Mode, disable Ctrl-C while( 1 ) { while (not defined ($key = ReadKey(-1))) { } if(ord($key) == 13) { # if Enter was pressed... print "\n"; # print a newline last; # and get out of here } print '*'; $pword .= $key; } ReadMode 0; # Reset tty mode before exiting. <==IMPORTANT return $pword; }
Also, Term::ReadKey comes standard with Perl.
--marmotUPDATE: Fixed a sorta bug. Accidentally introduced an extraneous while loop when I copied the code. Didn't hurt anything but my pride...
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Term::ReadPassword::Win32 kills STDIN
by Gulliver (Monk) on Feb 07, 2011 at 14:39 UTC | |
by furry_marmot (Pilgrim) on Feb 07, 2011 at 21:42 UTC | |
Re^2: Term::ReadPassword::Win32 kills STDIN
by Anonymous Monk on Apr 20, 2017 at 13:25 UTC |