1

现在我正在尝试生成 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;

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

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

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

任何帮助,将不胜感激!

4

2 回答 2

8

v0.620中添加了构造函数选项的特殊值self。以前,它需要一个或一个标量引用。OUTPUTIO::Handle

安装当前版本以使用此功能,或查阅您已安装版本的文档(例如,使用命令行或通过在metacpan 页面perldoc XML::Writer上的“转到版本”下拉列表中选择您的版本。)

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

my $output;
my $writer = XML::Writer->new(OUTPUT => \$output);
...;
print $output;
于 2013-06-28T13:12:08.520 回答
0

我有一个类似的错误信息。我的问题是$我在尝试加载的模块正文中缺少一个标志。有一个指令self->...应该是$self->....

我希望这有帮助

于 2017-01-23T20:52:44.457 回答