我正在尝试使用perl交互式程序进行通信。通过交互式我的意思是程序将一些输出放到stdout,然后等待stdin。根据用户在stdin中输入的命令,更多文本输出到stdout,然后继续。我在网上找到了以下示例并尝试修改它: #!/ usr / bin / perl
use IPC::Open2;
local (*Reader, *Writer);
$pid = open2(\*Reader, \*Writer, "./program arg1");
my $text;
while (<Reader>) {
print $_;
}
print Writer "n\n";
while (<Reader>) {
print $_;
}
close Writer;
close Reader;
waitpid($pid, 0);
程序只是坐在那里,直到我按下CTRL + C才输出任何内容到stdout。更重要的是,第二个阅读器循环不会打印任何内容。我试图模仿用户启动程序,将程序显示的文本打印到perl脚本的标准输出,模拟按“n”键,然后打印更多文本。这只是一个测试,但我真的希望用户使用我的perl脚本能够输入自己的命令。