加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl技巧 sort函数使用

发布时间:2020-12-15 23:58:07 所属栏目:大数据 来源:网络整理
导读:Perl中的sort函数是可以帮助我们解决排序问题的函数。 主要格式分为2种: @sorted = sort @array; @sorted = sort{sub cmp} @array; 从官方文档来看,主要分文以下几种常用法则: 按字符的一般排序 @sorted = sort @array; 与上一种方法相同 @sorted = sort{
Perl中的sort函数是可以帮助我们解决排序问题的函数。
主要格式分为2种:
  1. @sorted = sort @array;
  2. @sorted = sort{sub cmp} @array;


从官方文档来看,主要分文以下几种常用法则:

按字符的一般排序
@sorted = sort @array;

与上一种方法相同
@sorted = sort{$a cmp $b} @array;

按字符排序,不分大小写
@sorted = sort{fc($a) cmp fc($b)} @array;

按字符逆序排序,等同于reverse
@sorted = sort{$b cmp $a} @array;

比较数值的排序
?@sorted = sort{$a <=> $b} @array;

比较哈希的值,得到key的数组
@sorted = sort{$age{$a} <=> $age{$b}} keys(%age);

同上一样的效果,用sub的写法
sub byage{
? ? ?$age{$a} <=> $age{$b};
}
@sorted = sort byage?keys(%age);


代码举例

#1 :
#! /usr/bin/perl
use strict;
use warnings;
use Data::Dumper;

my %hash = (
        "li" => 3,"wang" => 15,"qing" => 9,"hua" => 1
        );
my @keys_arr = keys(%hash);
my @sorted_arr = sort{$hash{$a} <=> $hash{$b}} @keys_arr;
print Dumper(@sorted_arr);

输出结果 :


dxxu@rlsj-dxxu:/home/dxxu>{102}perl sort_keyword.pl
$VAR1 = [
          'hua','li','qing','wang'
        ];



#2 :?


#! /usr/bin/perl
use strict;
use warnings;
use Data::Dumper;

my @words = ("first","aaa","Asss","new","other","skill","jordan","last");
print "sort normally ====n";
my @normal_sorted = sort @words;
print Dumper(@normal_sorted);
my @special_sorted = sort{
    if ($a eq "first"){
        return -1;
    }
    elsif($b eq "first"){
        return 1;
    }
    elsif ($a eq "last"){
        return 1;
    }
    elsif($b eq "last"){
        return -1;
    }
    else{
        return ($a cmp $b);
    }
} @words;
print "sort specially ====n";
print Dumper(@special_sorted);

输出结果 :

sort normally ====
$VAR1 = [
          'Asss','aaa','first','jordan','last','new','other','skill'
        ];
sort specially ====
$VAR1 = [
          'first','Asss','skill','last'
        ];

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读