Предположим, что IP-адреса отображаются в колонке N:
use strict;
use warnings;
use constant N => 3;
my %counts;
while (<>)
{
my(@fields) = split /\s+/;
$counts{$fields[N]}++;
}
Это много дает хэш/P адреса I и соответствующие отсчеты.
my %iplist;
foreach my $address (keys %counts)
{
my $count = $counts{$address};
push @{$iplist{$count}}, $address;
}
Это много дает хэш подсчетов, и связанной с каждым графом, списком IP-адресов, которые имели этот счет.
use constant Wanted => 10;
my $printed = 0;
foreach my $count (sort { $b <=> $a } keys %iplist)
{
print "$count: @{$iplist{$count}}\n";
$printed += scalar(@{$iplist{$count}});
last if $printed >= Wanted;
}
Это сортирует счетчики в обратном направлении (по убыванию) порядке, и выводит количество и список IP-адресов, оказалось, что во много раз. Он также подсчитывает количество напечатанных адресов и останавливает цикл, когда это соответствует или превышает требуемое число.
просто хэш с ip-адресом как ключ? –
Видимо кандидат попросил приятеля спросить о переполнении стека ... – daotoad
Ну, я задаю вопросы о StackOverflow только для получения идей из разных сообществ :) – SuperMan