Автор Тема: Ввод данных в командной строке  (Прочитано 3372 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн PROnya

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.pronya.gibforex.com
Ввод данных в командной строке
« : 02 Сентября 2003, 10:26:44 »
Есть ли возможность в Perl вводить данные с клавиатуры в , не видя вводимые символы (наподобие парольного контрола в Windows)?

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Ввод данных в командной строке
« Ответ #1 : 02 Сентября 2003, 13:59:40 »
Возможно
Посмотри на пример http://melbourne.pm.org/talks/expect/3.login.html
The documentations is your friend

Оффлайн arto

  • Ветеран
  • *****
  • Сообщений: 699
  • +0/-0
  • 2
    • Просмотр профиля
Ввод данных в командной строке
« Ответ #2 : 02 Сентября 2003, 19:13:05 »
perldoc Term::ReadPassword

Оффлайн PROnya

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.pronya.gibforex.com
Ввод данных в командной строке
« Ответ #3 : 11 Сентября 2003, 16:51:30 »
К сожалению, не подошел ни один ответ, т.к. эти модули не доступны под винды. Я имел ввиду ввод пароля именно в командной строке Windows (почему не через control - отджельный разговор).
А проблема такая: есть скрипт, который использует DBI для коннекта к базе. А в методе DBI->connect("$dbname", $user, $passwd) пароль надо указывать "как есть", что не подходит. Вот и возникла идея запрашивать у пользователя ввод пароля, не показывая его.
Кто что посоветует?

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Ввод данных в командной строке
« Ответ #4 : 11 Сентября 2003, 19:21:10 »
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();
[ основной браузер когда-то был, теперь попробуй разберись =]

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28