1

我有一个基于 xml 定义创建报告的 perl 脚本。目前,这些定义都以 .xml 文件的形式存在。

所以我有脚本run-report.pl,它可以获取定义文件的路径并创建报告。

现在我想创建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

如果我正确理解您的问题,您只需要一个|(管道)。

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

管道中第一个进程打印到的任何内容stdout都将出现在第二个进程的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 回答