我有以下腳本,它們在我擁有的兩個不同的Perl安裝上行爲不同。一個是Perl 5.8.5,另一個是Perl 5.8.8。非ASCII數據的行爲與不同的Perl安裝不同
下面是腳本:
#!/usr/bin/perl
use FindBin(qw($Bin));
use lib $Bin;
use lib "$Bin/../lib";
use XML::LibXML;
use strict; # quote strings, declare variables
use warnings; # on by default
use warnings qw(FATAL utf8); # fatalize encoding glitches
use open qw(:std :utf8); # undeclared streams in UTF-8
my $xml =<<EOS;
<?xml version="1.0" encoding="UTF8"?>
<foo>Привет, мир!</foo>
EOS
my $parser = new XML::LibXML;
my $doc = '';
eval { $doc = $parser->parse_string($xml); };
if ([email protected]) {
die "Error: [email protected]";
}
my $root = $doc->getDocumentElement();
print "XML after parsing: ", $root->toString(), "\n";
在我的5.8.8 Perl安裝,我得到:
XML after parsing: <foo>Привет, мир!</foo>
在我的5.8.5 Perl安裝,我得到:
XML after parsing: <foo>Привет, мир!</foo>
我想要我的5.8.5安裝來表現像這方面的5.8.8一樣。這只是升級我的Perl,或設置一些特殊的編譯標誌?
看來XML :: LibXML的版本不同(大多數系統都爲每個版本的Perl分別保存模塊)。在兩種環境中查看'$ XML :: LibXML :: VERSION'變量。 – PSIAlt