s/// 和 Perl 6 中的组合变音符号

s/// and combined diacritics in Perl 6

问题的另一面。 当我尝试替换组合字符的一部分时,默认情况下 Perl 6 不会拆分它。

my $p_macron = "p" ~ 0x0304.chr; 
say $p_macron; # "p̄" 
(my $a_macron = $p_macron) ~~ s/p/a/;
say $a_macron; # OOPS, again "p̄"

如何(暂时)关闭此默认设置,以便能够匹配单个 Unicode 符号,而不是组合符号? 这是在 bash.

中是如何完成的
$ echo p̄ | sed 's/p/a/'
ā

sed 不适用于 Unicode 代码点,它适用于字节,因此当它被赋予 时,它会看到 0x<0070 0304> 而 Perl 6 正确地将其视为一个字素,并且如此对待它。这意味着 s/p/a/ 不会做任何事情,因为 p 不匹配 .

您本可以尝试 s:ignoremark/p/a/ (:m),这会给您 a
s:samemark/p/a/ (:mm) 这会给你 ā