パイプを使用して、Perl スクリプトを介してコマンドをアプリケーションに渡しています。だから私はパイプにコマンドを書きます。しかし、私の問題は、コマンドの実行がアプリケーション側から終了するまでパイプが待機せず、次のコマンドを受け取ることです。したがって、コマンドの実行が終了するまで入力をブロックしません。Perl スクリプトが UNIX シェルのように機能する必要があります。しかし、プロセスがバックグラウンドで実行されているように発生します。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);