我正在尝试通过将标准输入重定向到从文件中读取来测试从标准输入读取的函数,或多或少地按照此处的建议
这是脚本:
use strict;
use warnings;
use Term::EditLine qw(CC_EOF);
use v5.14;
my $el = Term::EditLine->new('progname');
$el->set_prompt ('# ');
$el->add_fun ('bye','desc',sub { say "\nbye"; return CC_EOF; });
$el->parse('bind','-e');
$el->parse('bind','exit','bye');
*STDIN = *DATA;
while (defined($_ = $el->gets())) {
say $_;
}
__DATA__;
goo
gar
exit
它正在使用Term::Editline
您必须先安装。在这种情况下,它不是从(伪造的)标准输入中读取,而是让我进入提示符。输入被设计成最后一个,exit
,将发出退出信号(如上面的命令所示)。但是,它根本不从重定向句柄中获取输入。它可能gets
实际上是在 XS 中定义的一个函数,但它可能是完全不同的东西。任何帮助将不胜感激。