我需要创建的XML文件就像
<file>
<state>$state</state>
<timestamp>$time</timestamp>
<location>$location</location>
....
</file>
我不想使用多个print来创建所需的XML文件,我期望的是有一个模板,它定义了XML的结构和格式。
然后在创建XML文件时,我只需要为模板中的变量提供实际值,并将指定的模板一次写入新创建的文件。
答案 0 :(得分:8)
#!/usr/bin/perl
use strict;
use warnings;
use HTML::Template;
my $template_text = <<EO_TMPL;
<TMPL_LOOP FILES>
<file>
<state><TMPL_VAR STATE></state>
<timestamp><TMPL_VAR TIME></timestamp>
<location><TMPL_VAR LOCATION></location>
</file>
</TMPL_LOOP>
EO_TMPL
my $tmpl = HTML::Template->new( scalarref => \$template_text );
$tmpl->param(
FILES => [
{ state => 'one', time => 'two', location => 'three' },
{ state => 'alpha', time => 'beta', location => 'gamma' },
]);
print $tmpl->output;
输出:
<file>
<state>one</state>
<timestamp>two</timestamp>
<location>three</location>
</file>
<file>
<state>alpha</state>
<timestamp>beta</timestamp>
<location>gamma</location>
</file>
答案 1 :(得分:5)
您可以使用Template::Toolkit
来执行此操作
答案 2 :(得分:1)
cpan
有几个可以使用的XML模块。
我的建议是,您从XML::Simple
或XML::API