Я пытаюсь протестировать функцию, которая читает из стандартного ввода, перенаправляя стандартный ввод для чтения из файла, более или менее, как рекомендовано здесь
Вот скрипт:
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, но это может быть нечто совершенно иное.Любая помощь будет оценена.