
列表与数组
|
65
们将会看到如何按自定规则排序。
sort
操作符只负责读取某个列表,对它排序,继而
返回排序后的新列表。来看几个例子:
@rocks = qw/ bedrock slate rubble granite /;
@sorted = sort(@rocks); #
返回
bedrock, granite, rubble, slate
@back = reverse sort @rocks; #
逆序,从
slate
到
bedrock
排列
@rocks = sort @rocks; #
将排序后的结果存到原数组
@rocks
@numbers = sort 97..102; #
得到
100, 101, 102, 97, 98, 99
从最后一个例子可以看出,将数字当成字符串来排序,这样的结果显然不对。按默认
排序规则,任何以
1
开头的字符串会被排在以
9
开头的字符串之前。此外,排序操作
和
reverse
操作一样,不会修改原始参数,只是返回新的列表。所以要对数组排序,
就必须将排序后的结果存回数组:
sort @rocks; #
错误,这不会修改
@rocks
@rocks = sort @rocks; #
现在收集到的石头从小到大排好了
each
操作符
从
Perl 5.12
开始,已经可以针对数组使用
each
操作符了。但在此之前,
each
只能用
于提取哈希的键-值对,有关哈希的内容我们留到第
6
章再讲。
每次对数组调用
each
,会返回数组中下一个元素对应的两个值——数组索引与元素 ...