Perl 6 多个全局正则表达式或字符替换

Perl 6 multiple global regex or character substitutions

在 Perl6 中编写多字符替换的最佳风格是什么?例如。我想用另一个字母表的字母替换一个字母表的字母。假设我的第一个 "alphabet" 是 abcd 而我的第二个是 efgh,所以我想进行替换 a → e,b → f,c → g,d → h。使用 sed 我会写:

$ echo dcba | sed 'y/abcd/efgh/'
hgfe

在Perl6中,据我理解,我应该这样写:

$ echo dcba | perl6 -pe 's:g/a/e/; s:g/b/f/; s:g/c/g/; s:g/d/h/'
hgfe

如果我使用 20-30-40(或更多)字符的字母表,这会很不方便。有没有更好的方法用Perl6解决这个问题?

在Perl6中和Perl 5一样有一个音译运算符tr。在Perl6中,这个运算符也有一个方法形式叫做trans:

echo dcba | perl6 -pe '$_.=trans(["a".."d"] => ["e".."h"])'

输出:

hgfe