使用 perl 将 Fraktur 符号转换为实体
Fraktur symbols into Entities conversion using perl
我需要将 Fraktur 符号转换为命名实体:
my $input = ", , is a symbols of fraktur";
预期输出:
$output = "𝔄, 𝔅, 𝔇 is a symbols of fraktur";
代码:
use Win32;
use open ':encoding(utf8)';
binmode STDOUT, ':utf8';
my %fraktursChr = ("𝔄" => "", "𝔅" => "", "𝔇" => "");
foreach my $key (keys %fraktursChr)
{
print "Key: $key-->$fraktursChr{$key}\n ";
$input=~s/\Q$fraktursChr{$key}\E/$key/g;
}
但是我无法使用 utf8 替换符号:如果有人可以帮助解决这个问题,我将不胜感激。
use utf8;
需要添加以告诉 Perl 源代码是使用 UTF-8 编码的。
use utf8; # Source code is encoded using UTF-8.
use open ':std', ':encoding(UTF-8)'; # Terminal expects/provides UTF-8.
my $input = ", , is a symbols of fraktur";
my %fraktursChr = ("𝔄" => "", "𝔅" => "", "𝔇" => "",);
foreach my $key (keys %fraktursChr)
{
$input=~s/\Q$fraktursChr{$key}\E/$key/g;
}
print $input;
感谢PerlDuck and Dave Cross。
实际上不是答案,而是性能改进建议:
my $fraktursChr_pat = join '|', map quotemeta, keys %fraktursChr;
my $fraktursChr_re = qr/($fraktursChr_pat)/;
$input =~ s/$fraktursChr_re/$fraktursChr{}/g;
我需要将 Fraktur 符号转换为命名实体:
my $input = ", , is a symbols of fraktur";
预期输出:
$output = "𝔄, 𝔅, 𝔇 is a symbols of fraktur";
代码:
use Win32;
use open ':encoding(utf8)';
binmode STDOUT, ':utf8';
my %fraktursChr = ("𝔄" => "", "𝔅" => "", "𝔇" => "");
foreach my $key (keys %fraktursChr)
{
print "Key: $key-->$fraktursChr{$key}\n ";
$input=~s/\Q$fraktursChr{$key}\E/$key/g;
}
但是我无法使用 utf8 替换符号:如果有人可以帮助解决这个问题,我将不胜感激。
use utf8;
需要添加以告诉 Perl 源代码是使用 UTF-8 编码的。
use utf8; # Source code is encoded using UTF-8.
use open ':std', ':encoding(UTF-8)'; # Terminal expects/provides UTF-8.
my $input = ", , is a symbols of fraktur";
my %fraktursChr = ("𝔄" => "", "𝔅" => "", "𝔇" => "",);
foreach my $key (keys %fraktursChr)
{
$input=~s/\Q$fraktursChr{$key}\E/$key/g;
}
print $input;
感谢PerlDuck and Dave Cross。
实际上不是答案,而是性能改进建议:
my $fraktursChr_pat = join '|', map quotemeta, keys %fraktursChr;
my $fraktursChr_re = qr/($fraktursChr_pat)/;
$input =~ s/$fraktursChr_re/$fraktursChr{}/g;