2017-10-11 89 views
2

在Perl6中編寫多個字符替換的最佳風格是什麼?例如。我想用另一個字母表的字母替換一個字母表的字母。假設我的第一個「字母」是abcd,我的第二個 - efgh,所以我想要進行替換a→e,b→f,c→g,d→h。使用sed我會寫:Perl 6多個全局正則表達式或字符替換

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

在Perl6,據我所知,我應該寫這樣的:如果我走20-30-40字母

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

(甚至更多)字符,這將是不方便的。有沒有更好的方法來解決Perl6的這個問題?

回答

2

在Perl6有音譯操作者tr如在Perl 5. Perl6,也有這個操作者的方法的形式稱爲trans

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

輸出

hgfe 
+1

這就是太好了謝謝! '。='中的'.'是什麼意思?我是對的,'trans'以兩個列表作爲參數?它可以採取哈希? –

+2

是的,我查過了,它需要一個哈希!所以,我的問題只是關於'。='。 –

+2

我的意思是'$ _ = $ _。trans(...)'? –