perl 中 reverse、each、sort 操作符的使用

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值