我想根据其中一个键的值对哈希值进行排序,并打印出5个最佳结果。我试着用它做,但不幸的是它失败了。
示例值
key1 = 1
key2 = 2
key3 = 3
key4 = 4
key5 = 5
key6 = 6
key7 = 7
我的尝试:
my limit = 5;
while (my $keys (sort {$hoh{$b}{aaaa}<=>$hoh{$a}{aaaa}) && my $i <= $limit) {
$i++;
print "KEY: $keys VALUE1: $hoh{$keys}->{aaaa} VALUE2: $top_strategies{$keys}->{bbbb} \n";
}
预期结果:
KEY: key1 VALUE1: 1 VALUE2: 3213
KEY: key2 VALUE1: 2 VALUE2: 312
KEY: key3 VALUE1: 3 VALUE2: 41
KEY: key4 VALUE1: 4 VALUE2: 414123
KEY: key5 VALUE1: 5 VALUE2: 532
我的结果:
syntax error at backtest.pl line 252, near "$keys ("
syntax error at backtest.pl line 252, near "}<=>"
我做错了什么?或者还有其他解决办法吗?
答案 0 :(得分:0)
您不希望使用content(nl2br("New Product is here \n" .$product->title))
循环,因为它会反复“旋转”。你的排序。当条件为&#34;为真时,while
会反复运行。多次重新整理你的清单并不是你想要做的。
此外,当您对某些内容进行排序时,您需要指定要排序的内容。您已经告诉sort使用子例程(比较while
个元素),但没有指定基于该比较的 进行排序。您可能想要对$hoh
进行排序。
首先对列表进行排序,然后抓取前5个元素。
您可以使用&#39; for&#39;循环:
keys %hoh