in reply to Reading password from STDIN without echoing
If you don't insist STDIN, and open to GUI solution, I stripped piece of my old code, and here it is: (you don't need to port your entire application to GUI, just use this to get password. It can be easily wrapped in a function.)
use Tk; use Tk::DialogBox; use strict; use warnings; my $mw = MainWindow->new(title => "Password Demo"); my $login_first_try = 1; my $id; my $passwd; while (1) { my $dialog = $mw->DialogBox(-buttons => ["OK", "Cancel"], -title = +> "Login"); my $instruction; if ($login_first_try) { $instruction = "Please provide id/passwd: "; $login_first_try = 0; } else { $instruction = "Failed to login, please try again: " } $dialog->add("Label", anchor => "w", text => $instruction)->pack(f +ill => "x"); my $id_text = $dialog->add("Entry", width => 30)->pack(); my $passwd_text = $dialog->add("Entry", show => "*", width => 30)- +>pack(); $id_text->focus(); if ($dialog->Show() eq "OK") { print "OK pressed, validate here, if okay last and quit the wh +ile loop" #............. } else { exit; } }
|
|---|