my $test = "Joe's Store"; my $log_file = "c:\log.txt"; open(LOGFILE, "< $log_file") or die("Could not open log file."); my %seen = (); my %typeseen = (); # read it in while() { # we might be better with a split() here next unless /(.*?)\*(.*?)\*(.*?)\*(.*?)\*(.*?)\*(.*?)\*(.*?)\*(.*?)$/; my ($item, $logintype) = ($1, $4); $seen{$item}++; $typeseen{$item}{$logintype}++; } # dump it out foreach my $item (sort keys %seen) { print "$item:\n"; print "\tLog in activity: ", $seen{$item}, "\n"; foreach my $type (sort keys %{$typeseen{$item}}) { print "\t", $type, " activity: ", $typeseen{$item}{$type}, "\n"; } }