私はかなり新しいです。私は何をしようとしているのかについてドキュメントのためにinterwebsを探しています。私は運がない。Perlでの期待とファイルへのパイプ
私は全体を通してプロンプトを表示して情報をstdoutに出力するプログラムを持っています。その情報をファイルにパイプするPerlスクリプトを作成する必要があります。
私はExpectを使うことができると思っていましたが、最初のプロンプトの後にパイプに問題があるようです。ここで
は、私のコードの一部です:
# Run program and compare the output to the BASE file
$cmd = "./program arg1 arg2 arg3 arg4 > $outfile";
my $exp = new Expect;
$exp->spawn($cmd);
BAIL_OUT("couldn't create expect object") if (! defined $exp);
$exp->expect(2);
$exp->send("\n");
この場合は、「入力」を押すために、ユーザのための唯一のプロンプトがあります。このプログラムは小さく、非常に高速です.2秒は最初のプロンプトに到達するのに十分な時間です。
出力ファイルには、情報の前半部分のみが含まれています。
誰も私が後半をどのように捉えることができるかについての提案はありますか?
UPDATE:「<戻る>」Perlスクリプトを探しできることを冗長な表現である
spawn ./program arg1 arg2 arg3 arg4
expect "<Return>"
send "\r"
interact
: 私は、これは簡単なスクリプトを使用して期待して動作することを確認しました。
注:「< Return」と期待するためにPerlスクリプトを作成しようとしました。「...違いはありません。
すなわち
$exp->expect(2, '-re', "<Return>")
任意の考え?
更新日2:
ハザ!私は私の問題に対する解決策を見つけました...偶然、完全に。
だから、私は私が作ったいくつかのテストコードで間違えた...
末尾が期待$exp->expect(2);
$exp->send("\r");
$exp->expect(2);
注(2)...私は偶然で、それが働いたことを左に持っていました!
私は何が起こっているのか理解しようとしています。 Unixの期待はこのようには見えません! Perlで実装されているExpectは何かを予期しています...プロンプトだけではありませんか?
私はstdoutを収集するために別の2秒を期待して、私はすべてを得ることができます。
誰かがここで何が起こっているかについてより詳細な情報を提供できる人は、何が起こっているのか理解したいと思います。私が期待し使用していたので、
Expectを使用する必要がありますか?それは、特にperlを初めて使う人にとって、過剰なもののようです。 – TLP
他の提案はありますか?私はこの1つの質問以外には複雑すぎるようなものに遭遇していません。 – Rico