#!/usr/bin/perl -w use strict; my $log = './logfile'; my (@data, %count); my $count = &check("192.168.47.3"); sub check { my $ip = $_[0]; my %count; # open LOG, "< $log" or die "Can't open $log: $!"; while (){ push (@data, $_) if $_ =~ /$ip/; } # close LOG; foreach (@data){ my ($dst, $service) = (split /;/)[11,12]; $count{ $service }++; $count{ $dst }++; } return \%count; } while (my ($key, $count) = each(%$count)){ print "$key was seen $count times\n"; } __DATA__ 0;1;2;3;4;5;6;7;8;9;10;onedest;http;192.168.47.3 0;1;2;3;4;5;6;7;8;9;10;twodest;http;192.168.47.3 0;1;2;3;4;5;6;7;8;9;10;onedest;http;192.168.47.3 0;1;2;3;4;5;6;7;8;9;10;onedest;http;192.168.47.3 0;1;2;3;4;5;6;7;8;9;10;onedest;ftp;192.168.47.3