3

Is it possible - when prompting for a password - to configure prompt from IO::Prompter in a way that the input is not added to the history?

#!/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

質問を書いたときは不可能でしたが、NONE履歴を無効にする特別な履歴セットを含めるように IO::Prompter にパッチが適用されました。

パッチを適用した 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 に答える