У меня есть структура файла журнала, подобная этой:
Start Sollumsatz-Verrechnung 05.12.2018 03:42:51
Verwende 20 Threads.
Anzahl gesamt : 162360
Anzahl erfolgreich: 162360
Anzahl fehlerhaft : 0
Ende Sollumsatz-Verrechnung 05.12.2018 04:03:03
Я хочу сохранить часть информации в хеш (% hash_ref).В «flag-part» мой код переходит к строке «Verwende 20 Threads».но он должен перейти к «Анзал эрфолгрейх».Вы знаете, как это можно сделать?
Любая помощь будет признательна.
my %hash_ref;
my %filter;
my ($act, $time,$flag);
while(my $line = <FILE>) {
if ($line =~ /(.+? Sollumsatz-Verrechnung)\s+(\d\d.\d\d.\d\d\d\d \d\d:\d\d:\d\d)/) {
($act,$time) = ($1,$2);
$flag = 1;
}
elsif ($line =~ /(.+? Deaktiviere PKonten)\s+(\d\d.\d\d.\d\d\d\d \d\d:\d\d:\d\d)/) {
($act,$time) = ($1,$2);
$flag = 1;
}
elsif ($line =~ /(.+? PSK historisieren)\s+(\d\d.\d\d.\d\d\d\d \d\d:\d\d:\d\d)/) {
($act,$time) = ($1,$2);
$flag = 1;
}
else {
if ($flag) {
print $line,"\n" # this outputs 'Verwende 20 Threads'
if ($line =~ /Anzahl erfolgreich:\s+(.+?)\s*$/) {
#print $line, "\n";
push @{ $hash_ref{$act}{'Anzahl'} }, $1;
}
}
$flag = 0;
}
if (! defined($filter{$act}{$time})) {
push @{ $hash_ref{$act}{'time'} }, $time;
$filter{$act}{$time} = 1;
}
}