【引自Orange的博客】Perl被设计成90%擅长处理文本,10%处理其余的问题。因此Perl有强大的文本处理能力,包括正则表达式和方便的字符串处理函数。
用unpakc倒序字符串的方法:
perl -e '$i=sub{length($_[0])-1};$_= "\n.rekcah lreP rehtona tsuJ" ;while(&$i($_)){print unpack "x".&$i($_)."a1", $_ ;$_=unpack"a".&$i($_),$_}print' |
将其重新排列为一下格式:
$i=sub{ |
下面的while循环是核心内容,该循环直到$_的内容为空才会停止。循环中用unpack取得$_的最后一个字符并打印出来,然后再从$_中剔除这个字符,如此反复就达到了把原字符串倒序输出的目的。
下面简单说一下这里unpack的用法,unpack格式串中x表示跳过该位置的内容,a表示将该位置的内容解释为标准ASCII字符(串),因此如果有unpack "x10a1",$_就表示跳过$_的前10个字符,返回第11个字符;同样unpack "a10",$_表示返回前10个字符。配合使用格式字符x和a就能达到将原内容从最后一个字符处拆分的目的。
unpack和pack是一组很有用的对应函数,在对各种数据的底层操作中得到广泛使用,灵活掌握它们的用法会带来很大好处。对它们更详细的解释可以参见perlfunc手册页。
用substr倒序字符串的方法:
|
用reverse倒序列表的方法:
reverse(逆转)操作将输入的一串列表(可能是数组)按相反的顺序返回。如果不喜欢范围操作符: ..,只能从小到大,那可以使用reverse 来解决这个问题:
@fred = 6 ..10; |
注意最后一行,其中@fred 使用了2 次。Perl 通常先计算变量的值(赋值号右边),再进行赋值。注意reverse 返回逆转的列表,它不会改变其参数的值。如果返回值没有赋值给某个变量,那这个操作是没有什么意义的:
|
【相关文章】
|
||||
| · NAC安全访问控制 · 网络布线测试仪器 · Windows Server 2008专.. · Windows远程桌面应用 · 网络故障排除宝典 · 运营商封堵ADSL共享 中.. · 解析35岁技术人的价值.. · 世纪枭雄比尔盖茨的王.. |
· 主流品牌防火墙配置 · ASP.NET开发教程 · 超级计算机TOP500专题 · Vista SP1对决XP SP3 · SQL Server 2008/2005.. · 程序员如何成长? · C#技术开发指南 · 虚拟化技术还有点“虚” |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · Windows远程桌面应用 · C#技术开发指南 · Apache技术专题 |
· Windows集群服务应用 · C#技术开发指南 · 国际文档格式标准开战 · 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · C#技术开发指南 · 三层交换技术专题 · Apache技术专题 · C#技术开发指南 |
· Windows远程桌面应用 · 企业数据恢复指南 · Windows集群服务应用 · 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 反垃圾邮件技术应用 |
|||