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 部分を利用できるようにするには、追加のモジュールをインストールする必要がありますか? かなり古いバージョンの Perl を持っているので、どうにかして古いバージョンの XML::Write をインストールする必要がありますか?

どんな助けでも大歓迎です!

4

2 に答える 2

8

selfコンストラクターのOUTPUTオプションの特別な値はv0.620で追加されました。以前は、IO::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 に答える