如何阻止我的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。
答案 0 :(得分:2)
use strict;
use warnings;
use Term::ReadKey;
ReadMode ( 'noecho' );
my $password = <STDIN>;
ReadMode ( 'normal' ); #Back to your regularly scheduled program
不幸的是,它不是标准模块。而且,我在Windows上遇到了一些问题。