首先,如果有人问过这个问题,我想道歉。如果没有找到如何创建散列数组和数组散列的方法,就很难找到答案......
我正在创建一个日志分析器。每个错误条目的格式为
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 多个条目并不少见。除了创建 errs 数组外,分析运行得相当快。有没有更有效的方法来生成这个数组?
谢谢