Perl:使用多个数组引用值对哈希引用排序[已关闭]

ulydmbyx  于 2022-11-15  发布在  Perl
关注(0)|答案(1)|浏览(160)

**已关闭。**此问题为not reproducible or was caused by typos。目前不接受答案。

这个问题是由一个打字错误或一个无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
三个月前关门了。
Improve this question
我有一个散列引用,其值是一个数组引用。我想使用多个值对散列进行排序。例如:

{ 'ID' => ['Age', 'Name', 'Start-Date'] }

我想按以下方式排序:① Age ;然后乘以2)Start-Date(如果Age相等)。For example

#!/usr/bin/env perl
use strict;
use warnings;

my $r = {
    'QX' => ['17','Jack','2022-05-31'],
    'ZE' => ['19','Jill','2022-05-31'],
    'RW' => ['17','Aida','2022-08-23'],
    'FX' => ['19','Bill','2022-05-23'],
    'IR' => ['16','Dave','2022-04-01']
};

for my $key (sort {$r->{$a}-[0] <=> $r->{$b}-[0] or $r->{$a}-[2] cmp $r->{$b}-[2]} keys %{$r}) {
    say STDERR "$key: $r->{$key}->[0] : $r->{$key}->[2] : $r->{$key}->[1]";
}

然而,上面的代码产生了不一致的结果。
我的预期输出(先按Age排序,然后按Start-Date排序)将是:

IR: 16 : 2022-04-01 : Dave
QX: 17 : 2022-05-31 : Jack
RW: 17 : 2022-08-23 : Aida
FX: 19 : 2022-05-23 : Bill
ZE: 19 : 2022-05-31 : Jill
vdzxcuhz

vdzxcuhz1#

$r->{$a}-[0]

应该是

$r->{$a}->[0]

或仅

$r->{$a}[0]   # Arrow optional between indexes.

您也可以使用

use Sort::Key::Multi qw( uskeysort );

uskeysort { $r->{ $_ }->@[ 0, 2 ] } keys %$r

相关问题