繁体   English   中英

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

[英]Passing data into perl script from command line

我有一个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>提供报告定义

我敢肯定有很简单的方法做到这一点???

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

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

流水线打印到stdout的第一个进程中的所有内容都将出现在第二个进程的stdin

只要您从STDIN中阅读 ,就可以使用它。 请注意,使用下面的代码将其命名为echo.pl ,然后在命令行中运行并粘贴大量文本,这会发生什么。

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

while ( <> ) { 
    say;
}

<>是“从STDIN读取”的Perl速记。

只要您用来启动该过程的方法能够掌握标准输入和输出,就可以将其写入该句柄。 您必须使用可用的方式。 例如,在Java中,您必须获取流程的输入流,而在批处理命令中则必须通过管道进行处理。 在GUI终端,您可以剪切和粘贴。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM