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

Hello Wise Monks, I'm looking for a cross-platform way to disable echo for a password prompt without requiring users to install any modules (such as Term::Prompt). I know in Linux/Mac OS X I could just do `stty -echo`, but what about Windows? I know about @EHCO OFF, but I can't seem to make that work outside of a .bat file.
#!/usr/bin/perl for(74,117,115,116,32,97,110,111,116,104,101,114,32,80,101,114,108,32,104,97,99,107,101,114,44){print(chr($_))}

Replies are listed 'Best First'.
Re: Disable echo
by pc88mxer (Vicar) on Jun 02, 2008 at 22:01 UTC
Re: Disable echo
by tinita (Parson) on Jun 03, 2008 at 12:07 UTC
    the answer is lying on your hard drive:
    perldoc -q password How do I ask the user for a password? (This question has nothing to do with the web. See a different + FAQ for that.) There's an example of this in "crypt" in perlfunc). First, you + put the terminal into "no echo" mode, then just read the password norma +lly. You may do this with an old-style ioctl() function, POSIX termi +nal con- trol (see POSIX or its documentation the Camel Book), or a call + to the stty program, with varying degrees of portability. You can also do this for most systems using the Term::ReadKey m +odule from CPAN, which is easier to use and in theory more portable. use Term::ReadKey; ReadMode('noecho'); $password = ReadLine(0);