如何在perl中加载自包?

Spa*_*ade 1 perl

现在我正在尝试生成XML并从Perl中打印出来.我发现这个模块,XML :: Write,看起来相当不错.但是当我想尝试一下时,我遇到了一些相当奇怪的错误......

我的测试脚本看起来像这样

#!/usr/local/bin/perl -w

use strict;
use strict 'refs';
use XML::Writer;

my $writer = XML::Writer->new(OUTPUT => 'self');
$writer->xmlDecl("ISO-8859-1");
$writer->startTag("foo");
$writer->endTag("foo");
$writer->end;
print $writer->to_string;
Run Code Online (Sandbox Code Playgroud)

当我运行它时,唯一的输出是

无法在/usr/lib/perl5/site_perl/5.8.8/XML/Writer.pm第132行通过包"self"找到对象方法"print"(也许你忘了加载"self"?).

我错过了什么?我是否必须安装一些额外的模块才能使perl的OO部分可用?我应该以某种方式安装旧版本的XML :: Write,因为我有一个相当古老的Perl版本?

任何帮助,将不胜感激!

amo*_*mon 7

特殊值selfOUTPUT溶液中加入构造函数的选项v0.620.以前,它期望一个IO::Handle或一个标量参考.

安装当前版本以便能够使用此功能,或查阅已安装版本的文档(例如,使用命令行perldoc XML::Writer或在metacpan页面的"转至版本"下拉列表中选择版本.)

对于您的用例,您可以提供参考:

my $output;
my $writer = XML::Writer->new(OUTPUT => \$output);
...;
print $output;
Run Code Online (Sandbox Code Playgroud)