使用Perl中的sort和map按两列排序

时间:2013-07-01 10:16:34

标签: perl sorting perl-data-structures

我的列表为

@emprecords = (
                  ['pavan',24,25000],
                  ['kumar',25,35000],
                  ['ajay',22,35000],
                  ['vijay',25,20000]
);

我需要先按最低年龄排序,最先输出最高的slary。

1 个答案:

答案 0 :(得分:3)

使用<=>进行数字比较,使用条件or检查年龄相等时的薪水:

#!/usr/bin/env perl

use strict;
use warnings;
use Data::Dumper;

my @emprecords = sort {
                $a->[1] <=> $b->[1]
                        or
                $b->[2] <=> $a->[2]
                }
                (  ['pavan',24,25000],
                  ['kumar',25,35000],
                  ['ajay',22,35000],
                  ['vijay',25,20000]
);

print Dumper \@emprecords;

像以下一样运行:

perl script.pl

产量:

$VAR1 = [
          [
            'ajay',
            22,
            35000
          ],
          [
            'pavan',
            24,
            25000
          ],
          [
            'kumar',
            25,
            35000
          ],
          [
            'vijay',
            25,
            20000
          ]
        ];