**已关闭。**此问题为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
1条答案
按热度按时间vdzxcuhz1#
应该是
或仅
您也可以使用