http://www.perlmonks.org?node_id=946223

Frits has asked for the wisdom of the Perl Monks concerning the following question:

Hi All, At this moment I have my script asking for a password without the echo.

use strict; use warnings; use diagnostics; use lib '/perlmod/lib/'; use lib '/perlmod/arch/'; use lib '/tools/perl/lib/'; use lib '/usr/local/lib/perl5/5.8.8/'; use lib '/tools/perl/arch/'; use Expect; use Spreadsheet::WriteExcel; use MIME::Lite; use File::Grep qw( fgrep fmap fdo ); use Time::Local; use Net::SNMP; use Term::ANSIColor; print "login password: "; system "stty -echo"; $to_be_usered = <STDIN>; chomp $to_be_usered; system "stty echo";

What I would like to achive is that any character entered is echo-ed back to the terminal as a star character getting *******. I have tried 4 options of which none were working. Any one an idea? Regards, Frits

Replies are listed 'Best First'.
Re: Changing stty echo to star characters
by derby (Abbot) on Jan 04, 2012 at 11:46 UTC

    I don't believe the stty command has an option for this. You would need to read each character individually and echo back an asterisk accordingly. Term::Readkey makes this easy but you still need to handle edge cases like the backspace or control characters. Or you could just use IO::Prompt.

    -derby
Re: Changing stty echo to star characters
by Khen1950fx (Canon) on Jan 04, 2012 at 14:09 UTC
    Using IO::Prompt:
    #!/usr/bin/perl use strict; use warnings; use IO::Prompt; my $user = prompt "Enter username: ", -echo => "*"; my $pass = prompt "Enter password: ", -echo => "*";