Сначала я хотел бы извиниться, если этот вопрос был задан.Трудно найти ответ без определения того, как создавать массивы хэшей и хэши массивов ....
Я создаю анализатор логов.Каждая запись об ошибке имеет вид
timestamp # # human_timestamp errno #
Я создал хэш хэшей, используя функцию отображения, чтобы сделать следующее:
$logRef->{++$errCnt} =
{
line => $lineNum,
timestamp => $timestamp,
humanStamp => $humanStamp,
errno => $errno,
text => ''
};
Позже я проведу некоторый анализ, гдехотел бы изолировать записи между номерами строк.Записи анализа также хранятся в хешах ...
$analysis{++$iteration} =
{
result => $result,
startLine => $startLine,
endLine => $endLine,
errors => undef
};
$ analysis {errors} будет ссылкой на массив.Он заполняется следующим образом:
foreach my $iteration ( keys %analysis )
{
my @errKeys = grep { $logRef->{$_}{line} >= $analysis{$iteration}{startLine} &&
$logRef->{$_}{line} <= $analysis{$iteration}{endLine} }
keys %$logRef;
my @errs = ();
push @errs, $logRef->{$_}{errno} foreach ( @errKeys );
$analysis{$iteration}{errors} = \@errs;
}
Нередко мои файлы журнала содержат более 30000 записей.Анализ выполняется довольно быстро, за исключением создания массива ошибок.Есть ли более эффективный способ создания этого массива?
Спасибо