@ip = (1.1.1.1 2.2.2.2 1.1.1.1 4.4.4.4 1.1.1.1 4.4.4.4) #### IP -- Count 1.1.1.1 3 4.4.4.4 2 #### use strict; use warnings; my $fields = (); my @logs = (); my $reg_sip = (); my $si = (); my $sIp = (); my $key = (); my %sIp = (); open FILE, "c:/perl/fw.log" or die $!; while ($fields = ) { @logs = split (/ /,$fields); foreach $reg_sip (@logs) {if ($reg_sip =~ m/src=\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/) {$si = substr $reg_sip, 4; $sIp{$si} += 1; }} } my $top = 10; print "\nTop Ten Sources are\n"; my $i =0; foreach $key (sort {$sIp{$b} <=> $sIp{$a}} keys %sIp) {print "\n$key\t - $sIp{$key}"; $i++; if ($i == $top){last;}} ## Result Top Ten Sources are 10.71.74.100 - 2706 192.168.237.103 - 1896 192.168.237.119 - 1473 10.71.74.73 - 1302 192.168.237.110 - 650 10.71.74.139 - 325 10.71.74.74 - 238 192.168.33.32 - 213 192.168.237.247 - 124 192.168.237.250 - 18 #### use strict; use warnings; my @srcs = (); open FILE, "c:/perl/fw.log" or die $!; while () { if (my ($src) =/\bsrc=(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/){push @srcs, $src;} } #### Code to print Top n unique ip's in descending order from @srcs.