reverse 操作符
perl 中创建一个递增数组可以通过以下实现:
@numbers = (6..10);
=comment
生成一个递增数组,起于 6,止于 10,
此时 @numbers 的值为:(6,7,8,9,10)
=cut
reverse 操作符可以读入一个数组中的全部元素并反序输出,因此可以通过以下实现生成一个递减数组:
@reversed = reverse @numbers;
=comment
reverse 后的括号可加可不加,
@reversed 的值为:(10,9,8,7,6)
=cut
注意,reverse 操作符不会修改参数的值,因此必须将反序后的值存入数组。
reverse 还可以根据现有哈希转换得到新的哈希:
%colourful_rocks = (
slate => 'red',
bedrock => 'gray',
rubble => 'carmini',
granite => 'blue',
);
%rocks = reverse %colourful_rocks;
@keys = keys %rocks;
@values = values %rocks;
=comment
@keys 的值为:(blue,carmini,gray,red)
@values 的值为:(granite,rubble,bedrock,slate)
=cut
sort 操作符
sort 操作符根据字符编码对数组元素进行排序。
还是上述例子中的数组 numbers:
@sorted = sort @numbers;
=comment
@sorted 的值为:(10,6,7,8,9)
=cut
@rocks = qw/bedrock slate rubble granite/;
@sorted = sort @rocks;
=comment
@sorted 的值为:('bedrock,'granite','rubble','slate')
=cut
注意,sort 操作符会将数字当作字符串来排序。sort 操作同样不会修改传入参数的值。
each 操作符
对数组调用 each,会返回数组中下一个元素所对应的索引和值,对上述例子中的 @rocks,可以通过以下方式进行遍历:
while(($index, $value) = each @rocks) {
say "$index: $value";
}
执行这段代码,输出的结果如下:
0: bedrock
1: slate
2: rubble
3: granite
each 操作符还可以对哈希进行迭代:
%colourful_rocks = (
slate => 'red',
bedrock => 'gray',
rubble => 'carmini',
granite => 'blue',
);
while (($key, $value) = each %colourful_rocks) {
say "$key is $value";
}
执行上述代码,输出结果如下:
slate is red
granite is blue
rubble is carmini
bedrock is gray