我正在使用控制字符進行文本分離的書目記錄。當我在替代操作中使用Unicode字符名稱「STRING TERMINATOR」時,如果文本包含「Ü」,則會出現「格式錯誤的UTF-8字符」警告。替代工作與其他Unicode字符的名稱和含有 「ü」, 「A」, 「E」,文字...charnames,substitutions和Umlaut「Ü」:格式不正確的UTF-8字符
#!/usr/bin/perl
use v5.12;
use utf8;
use strict;
use autodie;
use warnings;
# use warnings qw< FATAL utf8 >;
use charnames qw<:full>;
use feature qw<unicode_strings>;
binmode STDOUT, ':utf8';
my @records = (qq[\N{U+0098}L'\N{U+009c} Année du Figaro], qq[\N{U+0098}The\N{U+009c} famous ümläut], qq[\N{U+0098}The\N{U+009c} famous Ümlaut], qq[\N{U+0098}\N{U+00DC}\N{U+009c}]);
my %replace = (
"\N{START OF STRING}" => "<ns>",
"\N{STRING TERMINATOR}" => "</ns>",
);
my $regex = join "|", keys %replace;
$regex = qr/$regex/;
foreach my $record (@records){
$record =~ s/($regex)/$replace{$1}/g;
say $record;
};
我用草莓的Perl v5.12.3.0。
怎樣才能避免這些警告?
感謝,jorol
感謝您的信息,但草莓Perl v5.14尚不可用... – jorol