1

我有一个在 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');有效,但我不知道如何打印正文)。

4

2 回答 2

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
于 2011-08-10T17:08:30.020 回答
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
于 2011-08-11T03:59:19.453 回答