Thread Daten aus Server-Logfile erheben (Common Log Format) mit Suchmuster (9 answers)
Opened by mojo at 2008-10-30 00:01

Dubu
 2008-11-08 12:59
#116098 #116098
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Wenn dein Logfile bzgl. Datum monoton steigend ist (d.h. es kommt nie ein älteres Datum nach einem neueren), dann würde ich für %date keinen Hash nehmen sondern gleich nur ein Array.
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
my @date;
...
while (my $zeile = <$logfile>) {
    # Datum herausfiltern
    if ($zeile =~ /.../) {
        $datum = $1;      # so etwas wie "12/Dec/2007"
        if (@date == 0 || $date[-1] ne $datum) {  # @date leer oder neues Datum
            push @date, $datum;
        }
        ...
    }
}

(ungetestet)
Es wird einfach verglichen, ob das gerade eingelesene Datum ungleich dem letzten gespeicherten ist - oder ob das Array noch leer ist. Wenn ja, kommt das Datum ins Array.

Alternativ zu dem oben, oder wenn das mit der Sortierung im Logfile nicht gilt, kannst du auch CPAN:Tie::IxHash nehmen. Damit bekommst du einen Hash, der die Reihenfolge erhält, in der Elemente hinzugefügt werden.

View full thread Daten aus Server-Logfile erheben (Common Log Format) mit Suchmuster