ITPub博客

首页 > Linux操作系统 > Linux操作系统 > perl里的 tr///

perl里的 tr///

原创 Linux操作系统 作者:perfychi 时间:2013-02-05 17:58:18 0 删除 编辑
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

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/27042095/viewspace-753960/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: perl for DBI 测试
请登录后发表评论 登录
全部评论

注册时间:2012-06-06

  • 博文量
    484
  • 访问量
    2975636