为什么此perl排序无法按预期进行?

时间:2018-12-10 00:09:36

标签: perl sorting

我首先计算数组中的键数。当“ vectranet”项的数量超过9时,排序将无法正常进行-“ vectranet”不在排序列表中的第一位(我按哈希值排序),这是我的代码,请帮助我,我会发疯:-)该表格告诉我,我的帖子主要是代码,我应该提供更多详细信息,但是我不能再写任何文字了,我解释了所有内容,因此需要附加这个庞大的数组,以供您查看我的问题所在:(

@cprov=(
'vectranet.pl',
'airmax.pl',
'mm.pl',
'aduro.pl',
'lss.net.pl',
'multiplay.pl',
'vectranet.pl',
'vectranet.pl',
'vectranet.pl',
'vectranet.pl',
'vectranet.pl',
'inetia.pl',
'orange.pl',
'orange.pl',
'proneteus.pl',
'zicom.pl',
'zicom.pl',
'ac1-nat13.pl',
'sownet.pl',
't-mobile.pl',
't-mobile.pl',
't-mobile.pl',
'multiplay.pl',
'multiplay.pl',
'cyfrowypolsat.pl',
'plus.pl',
'vectranet.pl',
'vectranet.pl',
'centertel.pl',
'centertel.pl',
'centertel.pl',
'play-internet.pl',
'centertel.pl',
'plus.pl',
'cyfrowypolsat.pl',
'play-internet.pl',
'centertel.pl',
'satfilm.com.pl',
'odramedia.pl',
'netia.com.pl',
'espol.com.pl',
'netia.com.pl',
'tpnet.pl',
'tpnet.pl',
'tpnet.pl',
'tpnet.pl',
'vectranet.pl',
'vectranet.pl',
'tktelekom.pl',
'tktelekom.pl',
'sitel.net.pl',
'inter-sat.pl',
'mm.pl',
'mm.pl',
'chello.pl',
'chello.pl',
'chello.pl',
'chello.pl',
'chello.pl',
'net-system.pl',
'vectranet.pl',
'krosoft.pl',
'artcom.pl',
'play-internet.pl',
'protonet.pl',
'plus.pl',
'tpnet.pl'
);

my %pcounts;
$pcounts{$_}++ for @cprov;

for my $key ( sort { $pcounts{$b} cmp $pcounts{$a} } keys %pcounts ) {
    print "$key - $pcounts{$key}\n";
}

1 个答案:

答案 0 :(得分:3)

按词法比较时,10位于2之前,就像ba位于c之前一样。您想进行数字比较,因此使用<=>而不是cmp