#!/usr/bin/perl use warnings; use strict; use Data::Dumper; ########################### open my $fh, '<', 'messages.txt' or die; my %data; my %seen; my @services; while (<$fh>) { chomp; if (/(^\w+\s+\d+\s+\d+:\d+:\d+)\s+\w+\s+(.*?)(\[[0-9]+\]:|:)/) { push @{$data{$1}}, [$2]; push @services, $2; } } close($fh); #print Dumper \%data; my @uniq = grep { ! $seen{$_}++ } @services; print "Time_Stamp Count @uniq\n"; my $cnt = {}; foreach my $k (keys %data) { my $count = scalar(@{$data{$k}}); foreach my $s (@uniq) { foreach my $i (0..$#{$data{$k}}) { if ($s eq ${$data{$k}}[$i]) { $cnt->{$s}++; } else { $cnt->{$s} = 0; } } } print "$k $count", join(" ", values %$cnt), "\n"; $cnt = {}; }