#! perl use strict; use warnings; use Term::ReadKey; sub read_input(); my $pw = read_password("Enter password: ", '*'); print "Password is: >$pw<\n"; read_input(); sub read_password { local $| = 1; my ($prompt, $mask) = @_; my $password; print $prompt; ReadMode $Term::ReadKey::modes{noecho}; while (1) { my $datum = ReadKey(-1); # Non-blocked read next unless defined $datum; last if $datum =~ /\R/; if ("\ch" eq $datum) { print "\ch \ch" if chop $password; next; } $password .= $datum; print $mask; } ReadMode $Term::ReadKey::modes{restore}; print "\n"; return $password; } sub read_input() { print "Input: "; my $in = ; chomp $in; print "You entered: >$in<\n"; return $in; }