my %error_count; my (@data = , @list, @splitter); foreach (@data) { $error_count{$1}++ if m/\](.*)\(20/, @data; @splitter = split (/\s/, @data); push (@list, @splitter); } for (keys %error_count) { print "DEVICE\t--> $list[3]\n"; print "DATE\t--> $list[0] $list[1]\n"; print "TIME\t--> $list[2]\n"; print "ERROR\t--> "$_\n"; print "\nThe above error occurred $error_count{$_} times\n"; }