2012-12-21 21:54
关于perl里的 tr///
可以参考这篇博客:
http://www.cnblogs.com/blueicely/archive/2012/12/13/2816371.html
-----------------------------------------------------------------------------------------------------------------------
接来看看tr 的选项,tr 只有三个选项,英文是perldoc 的说明,我把他的意思用我的话写出来:
c Complement the SEARCHLIST. <==清单没写到的就补给他右边清单的最后一个字元
d Delete found but unreplaced characters. <== 对照表中没有的项目就删掉
s Squash duplicate replaced characters. <== 连续重覆出现的字压成一个
来看看范例:
my $text= ' good cheese '; $text=~ tr/eo/eu/s; print " $text\n ";
# 结果gud chese ,
连续重覆出现的字已被压成一个
my $big= ' vowels are useful '; $big=~ tr/aeiou/AEI/d;
# 注意看对照表左边只有三个字母,所以如果遇到ou,就会被删掉print "$big\n";
# 结果vwEls ArE sEfl 合并以上两个参数
my $text= ' good cheese '; $text=~ tr/eogd/eu/ds;
# 写成ds 或sd 都可以,顺序不重要print "$text\n";
#结果u chese
最后来看c这个选项,c较复杂不易懂,大致以我的大脑所知的说明如下: tr/左清单/右清单/ c 规则、左清单没有的,就补右清单的东西。
my $text= ' good cheese '; $text=~ tr/eo/_/c;
#注意看对照表右边只有二个字母,只要右边清单没列到的就补'_',包括空白print "$text\n";
# 结果_oo____ee_e
如果右清单写了不只一个呢?会怎样?其实补的时候还是只会拿右清单的最后一个
$doc= " <78>Nov 3 11:20:01 163.17.44.1 crond[30367] "; $doc=~ y/a-zA-Z/az/c;
# 结果不是英文全都补了右清单的最后一个字元'z'
$doc= zzzzzNovzzzzzzzzzzzzzzzzzzzzzzzzzcrondzzzzzzz