如何阻止我的Perl脚本在运行时回显键入终端的内容?

时间:2013-07-22 23:11:31

标签: perl

如何阻止我的Perl脚本在终端运行时回显输入的内容?

我尝试使用system("stty -echo");,然后在最后运行system("stty echo");,但是一旦脚本结束,它仍会显示我输入的内容。我一直在玩这个测试脚本。

#!/usr/bin/perl

use strict;
use warnings;

system("stty -echo");

for (1..15) {

    print "$_\n";
    sleep(1);

}

system("stty echo");

如果永远不会达到第二个调用的系统(可能使用END块,但这不能保证也可以工作),这可能会弄乱终端。这也只是Unix,我的脚本也在Windows上运行。

我还找到了模块Term::Readkey,但我不想引入任何其他模块。

我也试过关闭STDIN,但这也不起作用。

使这个问题更容易的原因是我在执行期间根本不需要阅读STDIN,我可以忽略它。

我对这类问题没有多少经验,希望它比我做的更容易。谢谢!

编辑:如果有所作为,我会使用Perl 5.10。

1 个答案:

答案 0 :(得分:2)

看看Term::ReadKey

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

ReadMode ( 'noecho' );
my $password = <STDIN>;
ReadMode ( 'normal' );    #Back to your regularly scheduled program

不幸的是,它不是标准模块。而且,我在Windows上遇到了一些问题。