PERL: БИБЛИОТЕКА ПРОГРАММИСТА



              

PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 506


№ Имеется необработанный ввод $char } else {

# Необработанного ввода нет

ReadMode ('normal  );                                  # Восстановить нормальные

# параметры терминала

Комментарий

Аргумент -1 функции ReadKey означает неблокирующее чтение символа. Если символа нет, ReadKey возвращает undef.

> Смотри также---------------------------------------------------------------------------------------------

Документация по модулю Term::ReadKey с CPAN; рецепт 15.6.

15.10. Ввод пароля

Проблема

Требуется прочитать данные с клавиатуры без эхо-вывода не экране. Например, вы хотите прочитать пароль так, как это делает passwd, то есть без отображения пароля пользователя.

Решение

Воспользуйтесь модулем Term::ReadKey с CPAN, установите режим ввода noecho, после чего воспользуйтесь функцией ReadLine:

use Term    ReadKey,

ReadMode    noecho'; Spassword = ReadLine 0;

Комментарий

Пример 15.3 показывает, как организовать проверку пароля пользователя. Если в вашей системе используются скрытые пароли, getpwuid вернет зашифрованный пароль лишь привилегированному пользователю. Всем остальным в соответству­ющем поле базы данных возвращается лишь *, что совершенно бесполезно при проверке пароля.


536   Глава 15 • Пользовательские интерфейсы Пример 15.3. checkuser

#!/usr/bin/perl  -w

# checkuser - чтение и проверка пароля пользователя

use Term::ReadKey;

print "Enter your password: "; ReadMode 'noecho'; Spassword = ReadLine 0; chomp Spassword; ReadMode 'normal';

print "\n";

($username, Sencrypted) = ( getpwuid $< )[0,1];

if (crypt($password, $encrypted) ne $encrypted) {

die "You are not $username\n"; } else {

print "Welcome, $username\n";

> Смотри также---------------------------------------------------------------------------------------------

Документация по модулю Term::ReadKey с CPAN; man-страницы crypt(3) и passwd(5) вашей системы (если есть). Функции crypt и getpwuid описаны в perlfunc(l).

15.11. Редактирование входных данных




Содержание  Назад  Вперед