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;