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
在 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