我有一个perl脚本,它根据xml定义创建一个报告。目前,这些定义都以.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>
我确信这样做有很简单的方法???
答案 0 :(得分:2)
如果我理解你的问题,你只需要一个|
(管道)。
./generate-xml-from-db.pl | ./run-report.pl --stream
管道中的第一个流程打印到stdout
的任何内容都将显示在第二个流程的stdin
中。
答案 1 :(得分:0)
只要您从STDIN 读取,就可以使用它。请注意,如果使用下面的代码,请执行以下操作:echo.pl
在命令行运行它并粘贴大量文本。
#!/usr/bin/perl -w
use 5.010;
use strict;
use warnings;
while ( <> ) {
say;
}
<>
是“从STDIN读取”的Perl简写。
只要您用来启动进程的方法有办法获取标准输入和输出,您就可以将其写入该句柄。您必须使用可用的方式。例如,在Java中,您必须获取进程的输入流,在批处理命令中必须管道它。在GUI终端,您可以剪切和粘贴。