# $logfilename being defined previously.... my (%errors); open(LOGFILE, $logfilename) or die(qq{Can't open $logfilename for input: $!\n}); while (my $line = ) { # example format: mon day time server program[pid]: message my @lineparts = split(/\s+/, $line, 6); if ($lineparts[5] =~ m/^Error:/) { $errors{$lineparts[5]}{count}++; push(@{$errors{$lineparts[5]}{linenumber}}, $.); } } close(LOGFILE);