Perl提供了音译(或者说翻译)操作符,即tr///,这使得将一个字符与另一个字符之间的交换成为简单的操作。tr///操作符也可以用于移除相邻重复的字符,从一个字符串中移除指定的字符,或者计算指定字符的出现次数。
虽然tr///操作符看起来像是经常使用的表达操作m//和s///,但是它没有使用常规的表达式或者交换字符串。相反的,tr//使用一个搜寻列表和一个交换列表。
搜寻和交换列表中包含特定字符串或者被一个dash分离的连续字符串的范围。例如,以下两个字符串的设定是一样的:/ABCDEFG/或/A-G/。由于不同的人都有不同的字符设定,所以明智的做法是,以相同大小写的字母顺序(a-z, A-Z)或者数字(0-4)作为要操作的开始字符和结束字符。
Tr///返回要被交换的字符个数。如果交换字符串比搜寻字符串的要少,交换字符串的最后字符将不断重复以满足足够长度为止。如果交换列表为空,则搜寻列表将作为交换列表而使用。当你想计算字符出现的个数而不是交换字符的个数时,这一性质非常有用。
以下是使用Tr///的一些例子:
tr/aeiouAEIOU/./;
# 使用一个period取代所有和vowel
$count = tr/A-Za-z//; #
计算字母字符串个数
tr/n-za-mN-ZA-M/a-zA-Z/; # ROT13加密