Forum Webscript.Ru
Программирование => Perl => Тема начата: PROnya от 02 Сентября 2003, 10:26:44
-
Есть ли возможность в Perl вводить данные с клавиатуры в , не видя вводимые символы (наподобие парольного контрола в Windows)?
-
Возможно
Посмотри на пример http://melbourne.pm.org/talks/expect/3.login.html
-
perldoc Term::ReadPassword
-
К сожалению, не подошел ни один ответ, т.к. эти модули не доступны под винды. Я имел ввиду ввод пароля именно в командной строке Windows (почему не через control - отджельный разговор).
А проблема такая: есть скрипт, который использует DBI для коннекта к базе. А в методе DBI->connect("$dbname", $user, $passwd) пароль надо указывать "как есть", что не подходит. Вот и возникла идея запрашивать у пользователя ввод пароля, не показывая его.
Кто что посоветует?
-
PROnya
Если только под Win32, то есть решение через Win32::Console (пример):
use Win32::Console;
use strict;
my $con = new Win32::Console STD_INPUT_HANDLE;
exit(0) unless $con;
$con->Mode(ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT);
my $pw = \'\';
while (($_ = $con->InputChar(1)) ne "\\r") { $pw .= $_ }
#или так, но работает немного странновато
#$pw = $con->InputChar(8);
print $pw;
$con->Free();