1

xml 定義に基づいてレポートを作成する perl スクリプトがあります。現在、これらの定義はすべて .xml ファイルとして存在します。

run-report.plそのため、定義ファイルへのパスを取得してレポートを作成できるscriptがあります。

run-reports-from-db.pl次に、同じデータベース エントリに基づいてレポート定義を生成するを作成します。run-report.pl に渡す一時ファイルを作成したくありません。どうにかして定義を渡したいだけです。

だから言う代わりに:

run-report.pl -def=./path/to/def.xml

言えるようになりたい:

run-report.pl --stream

レポート定義を<STDIN>

これを行うにはかなり簡単な方法があると確信しています???

4

2 に答える 2

2

私があなたの質問を正しく理解していれば、必要なのは 1 つ|(パイプ) だけです。

./generate-xml-from-db.pl | ./run-report.pl --stream

パイプラインの最初のプロセスが出力するものstdoutはすべて、2 番目のプロセスの に表示されますstdin

于 2013-03-13T15:52:52.313 に答える
0

STDINから読んでいる限り、それを利用できます。echo.pl以下のコードをコマンドラインで実行してテキストの連なりを貼り付けるような名前を付けるとどうなるかに注意してください。

#!/usr/bin/perl -w
use 5.010;
use strict;
use warnings;

while ( <> ) { 
    say;
}

<>「STDINから読み取る」のPerlの省略形です。

プロセスの起動に使用しているメソッドに、標準の入力と出力を取得する方法がある限り、そのハンドルに書き込むことができます。あなたはあなたが利用できる方法を使わなければなりません。たとえば、Javaでは、プロセスの入力ストリームを取得する必要があり、バッチコマンドではそれをパイプする必要があります。GUIターミナルでは、切り取りと貼り付けを行うことができます。

于 2013-03-13T16:22:38.390 に答える