2017-10-18 68 views
3

this問題的另一面。 當我嘗試替換組合字符的一部分時,默認情況下,Perl 6不會拆分它。s ///和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/' 
ā 

回答

4

sed不會對Unicode代碼點工作,它適用於字節,因此當它被賦予它看到0x<0070 0304>而Perl 6的正確把它看作一個字形,並且將其視爲這樣。這意味着s/p/a/將不會做任何事情,因爲p不匹配

你可以嘗試s:ignoremark/p/a/:m),這會給你a,這會給你ā

+0


s:samemark/p/a/:mm)什麼做'(:M)'和'(:毫米)'意思?我應該把它們放在///之後嗎? –

+0

啊,我明白了,這只是寫副詞的另一種方式。 –