加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何让Perl为管道输入和键盘输入使用不同的句柄?

发布时间:2020-12-15 22:00:11 所属栏目:大数据 来源:网络整理
导读:我有一个处理管道的Perl脚本.在某些时候,我希望脚本暂停并要求用户键盘输入.我的$input = STDINgt ;;不起作用.它只是从管道中读取下一行.如何让Perl使用不同的句柄进行管道输入和键盘输入? 解决方法 如果您使用的是Unix平台,则可以打开文件句柄到/ dev / tt
我有一个处理管道的Perl脚本.在某些时候,我希望脚本暂停并要求用户键盘输入.我的$input =< STDIN&gt ;;不起作用.它只是从管道中读取下一行.如何让Perl使用不同的句柄进行管道输入和键盘输入?

解决方法

如果您使用的是Unix平台,则可以打开文件句柄到/ dev / tty(或使用 IO::Pty).使用tty的一个很好的例子是“测试程序是否以交互方式运行”示例: http://pleac.sourceforge.net/pleac_perl/userinterfaces.html

您还应该考虑通过Term::ReadKey(在perlfaq8中描述)进行密码IO – 我认为它可能与TTY相关而不是STDIO,但我不确定.如果不是,请使用0700年底列出的TTY Term :: ReadKey解决方案.

这是一个例子.

It’s not the best style (doesn’t use 3-arg form of open,nor uses lexical filehandles)但它应该工作.

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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读