从命令行将数据传递到perl脚本

时间:2013-03-13 15:46:47

标签: linux perl

我有一个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>

中提供报告定义

我确信这样做有很简单的方法???

2 个答案:

答案 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终端,您可以剪切和粘贴。