Bivio::IO::TTY
# Copyright (c) 2000 bivio Software, Inc. All rights reserved. # $Id$ package Bivio::IO::TTY; use strict; # NAME # # Bivio::IO::TTY - perform actions on a tty # # RELEASE SCOPE # # bOP # # SYNOPSIS # # use Bivio::IO::TTY; # use Bivio::UNIVERSAL; @Bivio::IO::TTY::ISA = ('Bivio::UNIVERSAL'); # DESCRIPTION # # Bivio::IO::TTY performs operations on a TTY. # #=IMPORTS use Term::ReadKey (); #=VARIABLES # METHODS # # # static read_password() : string # # static read_password(string prompt) : string # # Reads a password with prompt from /dev/tty. If it cannot open # /dev/tty, returns undef. # sub read_password { my($proto, $prompt) = @_; $prompt = 'Enter password: ' unless defined($prompt); return undef unless _open(); print TTY $prompt; Term::ReadKey::ReadMode('noecho', \*TTY); my $password = <TTY>; Term::ReadKey::ReadMode(0, \*TTY); print TTY "\n"; close(TTY); chomp($password); return $password; } #=PRIVATE METHODS # _open() : boolean # # Returns true if it can open /dev/tty. # sub _open { return open(TTY, '+</dev/tty') ? 1 : 0; } # COPYRIGHT # # Copyright (c) 2000 bivio Software, Inc. All rights reserved. # # VERSION # # $Id$ # 1;