3

是否有可能 - 在提示输入密码时 -promptIO::Prompter以不将输入添加到历史记录的方式进行配置?

#!/usr/local/bin/perl
use warnings;
use strict;
use 5.10.1;
use utf8;
use open qw( :encoding(UTF-8) :std );
use IO::Prompter;


my $password = prompt( 'Password: ', -echo => '' );
say $password;
$password = prompt( 'Password: ', -echo => '' );
say $password;
$password = prompt( 'Password: ', -echo => '' );
say $password;
$password = prompt( 'Password: ', -echo => '' );
say $password;
$password = prompt( 'Password: ', -echo => '' );
say $password;
4

2 回答 2

1

如果您愿意使用其他模块,我建议您使用Term::ReadKey

这是我编写的示例脚本,它将禁用回显以进行读取,读取一行并返回它接收到的内容以用于测试目的。

#!/usr/bin/perl

use strict;
use warnings;
use Term::ReadKey;

ReadMode 2;
my $pw;
print "Enter password ";
while ( not defined( $pw ) ) {
  $pw = ReadLine(-1); 
}
chomp $pw;
print "\nI got $pw entered\n";
ReadMode 0;
于 2013-01-15T16:02:12.747 回答
1

当您编写问题时这是不可能的,但是 IO::Prompter 已被修补以包含NONE禁用历史记录的特殊历史记录集。

带有补丁的 IO::Prompter 的第一个版本是 0.004003。

http://search.cpan.org/~dconway/IO-Prompter-0.004003/lib/IO/Prompter.pm

my $password = prompt('Password: ', -hNONE, -echo => '');

my $force_the_user_to_type = prompt('Type something: ', -hNONE);
于 2013-01-16T20:10:41.070 回答