我有一个处理管道的Perl脚本.在某些时候,我希望脚本暂停并要求用户键盘输入. my $input = <STDIN>;
不起作用.它只是从管道中读取下一行.如何让Perl使用不同的句柄进行管道输入和键盘输入?
DVK*_*DVK 13
如果您使用的是Unix平台,则可以打开文件句柄/dev/tty
(或使用IO::Pty
).
使用tty的一个很好的例子是"测试程序是否以交互方式运行"示例:http://pleac.sourceforge.net/pleac_perl/userinterfaces.html
您还应该考虑通过Term::ReadKey
(在perlfaq8中描述)进行密码IO - 我认为它可能与TTY相关而不是STDIO,但我不确定.如果不是,请使用brian d foy在本SO答案末尾列出的TTY + Term :: ReadKey解决方案.
这是一个例子.
它不是最好的风格(不使用3-arg形式open
,也不使用词法文件句柄)但它应该工作.
use autodie; # Yay! No "or die '' "
use Term::ReadKey;
open(TTYOUT, ">/dev/tty");
print TTYOUT "Password?: ";
close(TTYOUT);
open(TTY, "</dev/tty");
ReadMode('noecho', *TTY);
$password = ReadLine(0, *TTY);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
576 次 |
最近记录: |