我有一个Perl程序来解析输入XML文件并将值打印到输出文本文件。
当我使用DWIM Perl GUI构建时似乎工作正常,但是当我使用ActivePerl构建它时,由于缺少库而失败。
有人可以帮助我将代码转换为ActivePerl等效代码吗?
Perl代码是
use strict;
use warnings;
use XML::LibXML;
open( my $File, '>', 'options.txt' );
my $filename = $ARGV[0];
my $parser = XML::LibXML->new();
my $xmldoc = $parser->parse_file( $filename );
for my $sample ( $xmldoc->findnodes( '/Releases/Release' ) ) {
foreach my $child ( $sample->getChildnodes ) {
if ( $child->nodeType() == XML_ELEMENT_NODE ) {
print $File $child->textContent(), " ";
}
}
print $File "\n";
}
我的输入就像(在XML中)
<!-- Pre-Seed File for Script Generation -->
<Releases>
<Release>
<Family>F1L</Family>
<ArVersion>3.2.2</ArVersion>
<ReleaseVersion>C3.03.10.001</ReleaseVersion>
<PackageType>FULL</PackageType>
</Release>
<Release>
<Family>F1H</Family>
<ArVersion>4.0.3</ArVersion>
<ReleaseVersion>Ver4.03.20</ReleaseVersion>
<PackageType>SPAL</PackageType>
</Release>
</Releases>
输出应为
F1L 3.2.2 C3.03.10.001 FULL
F1H 4.0.3 Ver4.03.20 SPAL
答案 0 :(得分:1)
不需要“Activeperl等效”。 Perl代码是跨平台的。您的代码在Active Perl下运行良好。您只需要安装缺少的库。这个网站上有很多答案可以帮助你。
答案 1 :(得分:0)
&#34;我有一个activeperl许可证&#34; 你不需要ActivePerl许可证 - Perl是开源免费的,除非你已经分发了每年$ 1,000&#34;商业版&#34;
你应该在你的ActivePerl上安装XML::LibXML
,或者你应该继续使用DWIMPerl(基本上是带有一些额外模块的Strawberry Perl)。如果您正在使用ActiveState的Komodo,那么它应该适用于任何当前的Perl
答案 2 :(得分:0)
ActivePerl不是一种语言;它是一个Perl发行版。代码将在ActivePerl上正常运行。
>perl -v | perl -ne"print if /This|provided/"
This is perl 5, version 16, subversion 3 (v5.16.3) built for MSWin32-x64-multi-thread
Binary build 1603 [296746] provided by ActiveState http://www.ActiveState.com
>perl a.pl a.xml
>type options.txt
F1L 3.2.2 C3.03.10.001 FULL
F1H 4.0.3 Ver4.03.20 SPAL