perl 实现字符串中数字排序

 数值类型数组排序使用:

sort { $a <=> $b } @array;  #升序排列
sort { $b <=> $a } @array;  #降序排列

字符串类型数组排序使用:

sort { $a cmp $b } @array;  #升序排列
sort { $b cmp $a } @array;  #降序排列

字符串比较忽略大小写使用:

sort { lc($a) cmp lc($b) } @array;

字符串-数字类型数组排序使用:

@list = ("ab,33,dd", "cc,1,ee", "bb,12,cc");
foreach $line (@list){
   @sss = split(/,/,$line);
   $save{$sss[1]} = $line;
}
my @key =sort {$a <=> $b} keys %save;
for my $i(@key){
    push @array, "$save{$i}";
}
print "@array\n";  # cc,1,ee bb,12,cc ab,33,dd

 特别的,先后顺序的排序:

#!/usr/bin/perl

@list = ("ab,58,cd,0","bb,58,cd,0","cb,44,dd,e");
@array;
&compare(@list);    #cb,44,dd,e  ab,58,cd,0  bb,58,cd,0
foreach (@array){
    print "$_\n";
}
sub compare {
    my @list = @_;
    @Sum;
    $i = -1;
    @array;
    foreach (@list){
         $i++;
         @sss= split (/,/,$_);
         push @Sum,{name => $sss[0],num => $sss[1],tile => $sss[2],other => $sss[3]};
    }

    sub sen {
            $a->{num} <=> $b->{num}
         or $a->{name} cmp $b->{name}
    }
     @Result = sort sen @Sum;
     foreach $aa (@Result){
            @ls = ();
            push @ls, "$aa->{name}"; 
            push @ls, "$aa->{num}";
            push @ls, "$aa->{tile}";
            push @ls, "$aa->{other}";
            $line =join(",",@ls);
            push @array, $line;
     }
}

 

 

 

转载于:https://www.cnblogs.com/junyongwang/p/9412982.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值