我编写了一个多脚本,它以xml的形式返回输出。我有xsl文件,将从xml为每个脚本打印出一个漂亮的表。但是我需要编写一个脚本,在其中我调用所有这些多个脚本并创建一个输出。?
可以这样做吗?如果有的话,请有人给我一个如何做到这一点的例子。
#Example Script 1
use strict;
use warnings;
use Data::Dumper;
use XML::Simple;
use Getopt::Long;
my $output = '';
my $debug = 0;
my $path;
GetOptions('path=s' => \$path,'output=s' => \$output, 'debug=i' => \$d
+ebug);
if($output eq ''){
die ("parameter --output=s is missing");
}
open my $xmloutput, ">", $outputFile or die "can not open $outputFile
+";
print $xmloutput "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<?xml-s
+tylesheet type=\"text/xsl\" href=\"book.xsl\"?>\n<Books>\n";
my $parser = new XML::Simple;
my $data = $parser->XMLin("$path");
print $xmloutput " <bookDetails> \n";
print $xmloutput " <bookName>$data</bookName> \n";
print $xmloutput " </bookDetails> \n";
print $xmloutput " </Books> \n";
close $xmloutput;
示例2
EXAMPLE 2
use strict;
use warnings;
use Data::Dumper;
use XML::Simple;
use Getopt::Long;
my $output = '';
my $debug = 0;
my $path;
GetOptions('path=s' => \$path,'output=s' => \$output, 'debug=i' => \$d
+ebug);
if($output eq ''){
die ("parameter --output=s is missing");
}
open my $xmloutput, ">", $outputFile or die "can not open $outputFile
+";
print $xmloutput "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<?xml-s
+tylesheet type=\"text/xsl\" href=\"Piano.xsl\"?>\n<Piano>\n";
my $parser = new XML::Simple;
my $data = $parser->XMLin("$path");
print $xmloutput " <PianoDetails> \n";
print $xmloutput " <PianoName>$data</PianoName> \n";
print $xmloutput " </PianoDetails> \n";
print $xmloutput " </Piano> \n";
close $xmloutput;
答案 0 :(得分:1)
编写一个控制脚本,按顺序运行其他每个工具。
如果子工具将其重新格式化的XML输出写入STDOUT
,您可以使用pipe open语法捕获它并在控制脚本中重新格式化。如果他们保存文件,你需要收集每个文件,按摩并组合它然后清理。
答案 1 :(得分:0)
听起来你需要使用反引号(`)。
my $xmlout1 = `perl xmlscript1.pl`;
my $xmlout2 = `perl xmlscript2.pl`;
my $xmlout3 = `perl xmlscript3.pl`;
等
答案 2 :(得分:0)
您可以使用require按顺序运行多个perl脚本,无需使用系统调用。可以这样做:
my @scripts_to_run = ('first.pl', 'second.pl', 'third.pl');
for my $script (@scripts_to_run) {
require $script;
}
...虽然有些东西告诉我这应该是用一个脚本实际完成的,只是用不同的参数调用。 )该脚本可以保存为模块,在编译时只包含一次和use
,然后作为模块方法调用,无论你喜欢什么样的params(文件名)。 / p>