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

Linux 从命令行将数据传递到perl脚本,linux,perl,Linux,Perl,我有一个perl脚本,用于根据xml定义创建报告。目前,这些定义都以.xml文件的形式存在 因此,我有脚本run report.pl,它可以获取定义文件的路径并创建报告 现在我想从db.pl创建运行报告,它将基于相同的数据库条目生成报告定义。我不想创建要传递到run-report.pl的临时文件,我只想以某种方式传递定义 因此,与其说: run-report.pl -def=./path/to/def.xml 我想说: run-report.pl --stream 并在 我相信有非常简单的方

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

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

现在我想从db.pl创建
运行报告,它将基于相同的数据库条目生成报告定义。我不想创建要传递到run-report.pl的临时文件,我只想以某种方式传递定义

因此,与其说:

run-report.pl -def=./path/to/def.xml
我想说:

run-report.pl --stream
并在


我相信有非常简单的方法可以做到这一点???

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

/generate-xml-from-db.pl |/run-report.pl——流
管道中第一个进程打印到
stdout
的任何内容都将出现在第二个进程的
stdin

中,只要您从stdin读取,它就可用。请注意下面的代码将其命名为
echo.pl
在命令行中运行它并粘贴大量文本

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

while ( <> ) { 
    say;
}
#/usr/bin/perl-w
使用5.010;
严格使用;
使用警告;
而{
说,;
}
是“从STDIN读取”的Perl缩写


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

或者更准确地说:简写为“从STDIN或ARGV读取,以我目前使用的为准”。