Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Term::ReadPassword::Win32 kills STDIN

by Gulliver (Monk)
on Feb 04, 2011 at 21:46 UTC ( #886306=perlquestion: print w/ replies, xml ) Need Help??
Gulliver has asked for the wisdom of the Perl Monks concerning the following question:

After the call to read_password STDIN stops working. It doesn't wait for user input. Any ideas?

#!/usr/bin/perl use strict; use warnings; use Term::ReadPassword::Win32; $Term::ReadPassword::Win32::USE_STARS = 1; my $pass1 = read_password(' sftp password: '); print "Password:$pass1,\n"; print "\nLoad template configuration? \n[Y/n] :"; chomp (my $ans=<STDIN>); #doesn't wait here for input print "ans=$ans,,,\n";

Comment on Term::ReadPassword::Win32 kills STDIN
Download Code
Re: Term::ReadPassword::Win32 kills STDIN
by syphilis (Canon) on Feb 04, 2011 at 23:22 UTC
Re: Term::ReadPassword::Win32 kills STDIN
by furry_marmot (Pilgrim) on Feb 04, 2011 at 23:59 UTC
    You could also just use Term::ReadKey. I've used it on Win2k, XP, and Vista. It's clumsy to use, but I stuffed it into a utility module I use, like so:
    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.

    --marmot

    UPDATE: Fixed a sorta bug. Accidentally introduced an extraneous while loop when I copied the code. Didn't hurt anything but my pride...

      Thanks! Have you considered putting this on cpan?
        This and several other solutions are addressed in perlfaq8. It turns out to be surprisingly platform-dependent.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://886306]
Approved by ikegami
Front-paged by ikegami
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (10)
As of 2014-07-28 19:27 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (207 votes), past polls