use strict; use warnings; my $file = $ARGV[0]; open (FH, "<$file"); my %ip_stat; while (my $line = <FH>) { #131.130.102.51 - - [08/Jul/2005:20:10:34 +0200] "GET / HTTP/1.1" 200 11660 $line =~ /^(.*?) /; $ip_stat{$1}++; # if (exists $ip_stat{$1}) { # $ip_stat{$1} = $ip_stat{$1} + 1; # else { # $ip_stat{$1} = 1; # } } my @ip_sort = sort {$ip_stat{$b} <=> $ip_stat{$a}} keys %ip_stat; my $i; foreach (@ip_sort) { last if $i++>15; printf "%02d: %-17s: %5d\n", $i, $_, $ip_stat{$_}; } #foreach my $ip (keys %ip_stat) { # printf "%-17s: %s\n", # $ip, $ip_stat{$ip}; #}