PerlSort函数用法总结和使用实例.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一) sort 函数用法 sort LIST sort BLOCK LIST sort SUBNAME LIST sort 的用法有如上 3 种形式。它对 LIST 进行排序,并返回排序后的列表。假如忽略了 SUBNAME 或 BLOCK ,sort 按标准字串比较顺序来进行(例如 ASCII 顺序)。如果指定了 SUBNAME ,它实际上是个子函数的名字,该子函数对比 2 个列表元素,并返回一个小于, 等于,或大于 0 的整数,这依赖于元素以何种顺序来 sort (升序,恒等,或降序) 。也可提 供一个 BLOCK 作为匿名子函数来代替 SUBNAME ,效果是一样的。 被比较的 2 个元素,会被临时赋值给变量 $a 和 $b 。它们以引用传递,所以不要修改 $a 或$b 。假如使用子函数,它不能是递归函数。 二) 用法实例 1. 以数字顺序 sort 代码如下 : @array = (8, 2, 32, 1, 4, 16); print join(' ', sort {$a <=> $b} @array), "\n"; 打印结果是: 复制代码 代码如下 :1 2 4 8 16 32 与之一样的是: 复制代码 代码如下 :sub numerically { $a <=> $b }; print join(' ', sort numerically @array), "\n"; 这个很容易理解哦,它只是按自然数的顺序进行 sort ,偶就不细讲了。 2.1 以 ASCII 顺序 (非字典顺序 )进行 sort 代码如下 : @languages = qw(fortran lisp c c++ Perl python java); print join(' ', sort @languages), "\n"; 打印结果: 复制代码 代码如下 :Perl c c++ fortran java lisp python 这等同于: 复制代码 代码如下 :print join(' ', sort { $a cmp $b } @languages), "\n"; 按 ASCII 的顺序进行排序,也没什么说的哦。 注意,如果对数字按 ASCII 顺序进行 sort 的话,结果可能与你想的不同: 代码如下 : print join(' ', sort 1 .. 11), "\n"; 1 10 11 2 3 4 5 6 7 8 9 2.2 以字典顺序 sort 代码如下 : use locale; @array = qw(ASCII ascap at_large atlarge A ARP arp); @sorted = sort { ($da = lc $a) =~ s/[/W_]+//g; ($db = lc $b) =~ s/[/W_]+//g; $da cmp $db; } @array; print "@sorted\n"; 打印结果是: 复制代码 代码如下 :A ARP arp ascap ASCII atlarge at_large use locale 是可选的 -- 它让 code 兼容性更好, 假如原始数据包含国际字符的话。 use locale 影响了 cmp,lt,le,ge,gt 和其他一些函数的操作属性 --更多细节见 perllocale 的 man page。 注意 atlarge 和 at_large 的顺序在输出时颠倒了,尽管

您可能关注的文档

文档评论(0)

lyf66300 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8020140062000006

1亿VIP精品文档

相关文档