Cha*_*ens 12
您可以使用\ X特殊转义(匹配非组合字符和以下所有组合字符)split
来制作字形列表(它们之间有空字符串),反转字形列表,然后将join
它们重新组合在一起:
#!/usr/bin/perl
use strict;
use warnings;
my $original = "re\x{0301}sume\x{0301}";
my $wrong = reverse $original;
my $right = join '', reverse split /(\X)/, $original;
print "original: $original\n",
"wrong: $wrong\n",
"right: $right\n";
Run Code Online (Sandbox Code Playgroud)
最好的答案就是使用Unicode的:: GCString,为思南指出
我稍微修改了Chas的例子:
split
(在5.10之后不起作用,显然,所以我删除了它)通过几次调整,它基本上是相同的.
use strict;
use warnings;
binmode STDOUT, ":utf8";
my $original = "re\x{0301}sume\x{0301}";
my $wrong = reverse $original;
my $right = join '', reverse split /(\X)/, $original;
print <<HERE;
original: [$original]
wrong: [$wrong]
right: [$right]
HERE
Run Code Online (Sandbox Code Playgroud)