2012-01-18 3 views
6

Ho provato il seguente codiceCome chiedere la password sulla console di Windows in uno script Perl?

use strict; 
use warnings; 

use Term::ReadPassword::Win32 qw(read_password); 

my $pw = read_password('pw: '); 
print "pw $pw\n"; 
my $x = <STDIN>; 
print "x: $x\n"; 

Si chiede infatti una password e non eco la risposta, ma poi salta sopra la < STDIN> che lo segue. Immagino che questo sia un bug in Term :: ReadPassword :: Win32 quindi mi chiedo se c'è un altro modulo che funziona bene su Windows?

+4

http://www.perlmonks.org/?node_id=886306 segnala lo stesso problema e fornisce un'implementazione di lettura-password alternativa utilizzando Term :: ReadKey. Il problema di fondo è [questo bug] (https://rt.cpan.org/Public/Bug/Display.html?id=33513#txn-425619) in Win32 :: Console, che può essere aggirato riaprendo STDIN e/o STDOUT. – nandhp

+0

@nandhp perfetto. Grazie. – szabgab

+0

@nandhp Dovresti pubblicare il tuo commento come soluzione. – JRFerguson

risposta