我在Apache服务器上运行了一个perl CGI脚本。除其他外,该脚本应该显示一些从输入生成的XML。使用XML :: Writer模块,我创建了一个包含正确XML的字符串标量,但我似乎无法弄清楚如何将其发布回浏览器。目前我的功能如下:
sub display_xml {
# input variables here
my $output = '';
my $writer = XML::Writer->new(
OUTPUT=>\$output,
DATA_MODE => 1,
DATA_INDENT =>1
};
$writer->xmlDecl('UTF-8');
$writer->startTag('response');
#omitted for brevity
$writer->endTag('response');
$writer->end();
}
任何人都可以帮我吗?将$output
打印到STDOUT不起作用,我没有看到CGI.pm中的任何函数来执行此操作(print $cgi->header('text/xml');
有效,但我无法弄清楚如何打印正文)。
答案 0 :(得分:2)
你可以在不使用CGI的情况下实现。
print "Content-Type: text/xml\r\n"; # header tells client you send XML
print "\r\n"; # empty line is required between headers
# and body
print $output; # the body: XML
答案 1 :(得分:1)
CGI是一种相对简单的协议,它将脚本的标准输出发送到客户端计算机。您只需将标题放在输出的开头即可。这对我有用:
use CGI qw(:standard);
use XML::Writer;
my $output = '';
my $writer = XML::Writer->new(
OUTPUT => \$output,
DATA_MODE => 1,
DATA_INDENT => 1
);
$writer->xmlDecl('UTF-8');
$writer->startTag('response');
#omitted for brevity
$writer->endTag('response');
$writer->end();
print header('text/xml'), $output;
另外,请确保将shebang行放在开头并使脚本可执行,以便服务器知道如何运行它:
#!perl