我正在尝试通过将标准输入重定向为从文件读取的功能来测试从标准输入读取的功能,该功能或多或少地为advised here
这是脚本:
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中定义的函数,但可能完全不同。任何帮助将不胜感激。