Perl用引用排序二维数组



我对perl有点陌生,所以请原谅我。到目前为止,我已经用尽了所有可能的解决办法。

假设我有一些帽子,有一些尺寸,在其他地方填充。我想根据某一列对它们排序。我试着用perl的"排序"来做这件事,但我没有让它们真正排序。我认为问题是我对推荐信感到困惑。下面的代码是我目前正在使用的。

my @hat1 = [3, 4, 5, 6, 7, 8];
my @hat2 = [4, 6, 5, 1, 1, 2];
my @hat3 = [9, 8, 9, 3, 4, 4];
#eventually work with unknown number of hats
my @binToSort = (@hat1,@hat2,@hat3);
my @binSorted = sort { $a->[4] <=> $b->[4] } @binToSort;
for my $ref (@binSorted){
    for my $inner (@$ref){
        print "@$innern";
    }
}

现在它打印出未排序的数组值:

3 4 5 6 7 8
4 6 5 1 1 2
9 8 9 3 4 4

但是我希望能够到达:

4 6 5 1 1 2
9 8 9 3 4 4
3 4 5 6 7 8
我觉得这是一个简单的问题,但我想不出正确的方法来解决它。任何帮助都非常感激!

您需要:

my $hat1 = [ 3, 4, 5, 6, 7, 8 ];
my $hat2 = [ 4, 6, 5, 1, 1, 2 ];
my $hat3 = [ 9, 8, 9, 3, 4, 4 ];
#eventually work with unknown number of hats
my @binToSort = ( $hat1, $hat2, $hat3 );
my @binSorted = sort { $a->[4] <=> $b->[4] } @binToSort;
for my $ref (@binSorted) {
    for my $inner ( @{$ref} ) {
        print "$inner";
    }
    print "n";
}

my @hat1 = ( 3, 4, 5, 6, 7, 8 );
my @hat2 = ( 4, 6, 5, 1, 1, 2 );
my @hat3 = ( 9, 8, 9, 3, 4, 4 );
#eventually work with unknown number of hats
my @binToSort = ( @hat1, @hat2, @hat3 );
my @binSorted = sort { $a->[4] <=> $b->[4] } @binToSort;
for my $ref (@binSorted) {
    for my $inner ( @{$ref} ) {
        print "$inner";
    }
    print "n";
}

最新更新