在perl中写入管道

在perl中写入管道,perl,pipe,Perl,Pipe,我使用管道通过Perl脚本将命令传递给某个应用程序。 所以我在管道上写命令。但我的问题是,管道不会等到命令从应用程序端执行完毕并接收下一个命令时才开始。因此,在命令执行结束之前,它不会阻塞输入。我需要我的Perl脚本像unixshell一样工作。但它就像进程在后台运行一样。我使用readling读取输入 #!/usr/bin/perl -w use strict; use Term::ReadLine; open (GP, "|/usr/bin/gnuplot -noraise") or d

我使用管道通过Perl脚本将命令传递给某个应用程序。 所以我在管道上写命令。但我的问题是,管道不会等到命令从应用程序端执行完毕并接收下一个命令时才开始。因此,在命令执行结束之前,它不会阻塞输入。我需要我的Perl脚本像unixshell一样工作。但它就像进程在后台运行一样。我使用readling读取输入

#!/usr/bin/perl -w

use strict;
use Term::ReadLine;

open (GP, "|/usr/bin/gnuplot -noraise") or die "no gnuplot";
use FileHandle;
GP->autoflush(1);
# define readline
$term = new Term::ReadLine 'ProgramName';
while (defined( $_ = $term->readline('plot>'))) {
    printf GP ("$_\n");
}
close(GP);

我建议使用一个具体的CPAN模块,比如,这样您就可以有一个高级别的控制

我想,每次发送命令后,管道都必须关闭。不确定。我不想关闭管道,但应该等到执行结束。很抱歉,GNUPLOT就是一个例子。应用程序可能是其他的,执行每个命令需要几秒钟的时间。管道应连续打开。整个操作结束后,管道将关闭。问题是它接受输入,不等待应用程序的执行。请帮忙。