[英]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.