Perl中的数组排序

前端之家收集整理的这篇文章主要介绍了Perl中的数组排序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是Perl的新手并且遇到了一个(很简单的)数组排序问题.

我继承了一些Perl代码,它将文本文件中的行读入三个1-D数组(x,y,z).我希望能够使用其中一个维度作为关键字对这些数组进行排序,并重新排序其他两个维度以匹配.

例如,如果我的输入是:

> @x =(1,3,2)
> @y =(11,13,12)
> @z =(21,23,22)

我按x排序,我希望结果如下:

> @x =(1,2,3)
> @y =(11,12,13)
> @z =(21,22,23)

如果能让生活更轻松,我可以将三个1-D阵列合并为2-D阵列.

解决方法

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

use List::Util qw(reduce);

my @x = (1,2);
my @y = (11,12);
my @z = (21,22);

my @combined = map { [ $x[$_],$y[$_],$z[$_] ] } 0 .. $#x;
my @sorted = sort { $a->[0] <=> $b->[0] } @combined;
my $split_ref = reduce { push @{$a->[$_]},$b->[$_] for 0 .. $#$a; $a;} [[],[],[]],@sorted;

print Dumper \@combined;
print Dumper \@sorted;
print Dumper $split_ref;

这基本上会给你:

[
      [
        1,3
      ],[
        11,13
      ],[
        21,23
      ]
    ];

猜你在找的Perl相关文章