Expect を使用して、長時間実行される対話型プロセスと通信しようとしています。プロセスをシミュレートするために cat -un を使用しています。私のコードは次のとおりです。
#!/usr/bin/perl
use strict;
use warnings;
use Expect;
my $timeout = 4000;
my $exp = Expect->spawn("cat -un");
my $text = <STDIN>;
$exp->send($text);
$text = <STDIN>;
$exp->send($text);
$exp->expect(undef); # Forever until EOF
$exp->expect($timeout); # For a few seconds
$exp->expect(0);
$text = <STDIN>;
$exp->send($text);
$exp->expect(undef); # Forever until EOF
$exp->expect($timeout); # For a few seconds
$exp->expect(0);
最初の文字列 + enter を押しても何も出力されません (明らかに)。2 番目の文字列を入力し、Enter キーを押して、cat -un から stdout を画面にダンプします。私の 3 番目の文字列は出力を生成しませんが、stdout も画面にダンプしたいと考えています。
私の目標は、画面にテキストを表示する (ユーザーにメニューから選択するように求める) インタラクティブなプロセスと通信し、ユーザーに応答を入力してプロセスに送信する (より多くの出力とメニューを生成する) ことです。
これを行うには、Expect が最も簡単な方法のようです。助けてください。