#!c:/perl/bin/perl.exe -w #Beschreibung Programm use strict; my $counter = 0; my $ip = (); my $date = (); my $time = (); my $req = (); my $client = (); my @timeresult = (); my $timereport = (); my $zeile = (); my $starttime = (); my $endtime = (); open FH, "log.txt" or die $!; my @logentries = ; foreach (@logentries) { #soll die Zeichenfolge

am Anfang ersetzen $_ =~ s/^\

//g; #soll verhindern, dass leere Zeilen oder Zeilen mit Zeichenfolge

mitgezählt werden next if ($_ =~ m/^\<\/p\>\<\/pre\>/); #reexp um IP, Datum, Zeit, Anforderung und Browser herauszufiltern #mein Ansatz war die Zeichenfolge ", da die in jeder Zeile vorkommen (jedoch nicht immer in der selben Anzahl), diese Expres funktioniert #$_ =~ m/(^\d{0,}.\d{0,}.\d{0,}.\d{0,}).+\[(\d{2})\/(\w{3})\/(\d{4}):(\d{2}:\d{2}:\d{2}).\+0000\]."\;(\w+).\/.+"\;.+"\;.+".+".+/, #"\;(\w+).+/; #Diese RegExpr sollte den Browser auch ausgeben, jedoch hier liegt der Fehler. Wenn ich den letzten Ausdruck mitnehme, dann werden nicht alle Zeilen ausgewertet $_ =~ m/(^\d{0,}.\d{0,}.\d{0,}.\d{0,}).+\[(\d{2})\/(\w{3})\/(\d{4}):(\d{2}:\d{2}:\d{2}).\+0000\]."\;(\w+).\/.+"\;.+"\;.+".+".+"\;(\w+).+/; $ip = $1; #Datum im Format Jahr/Monat/Tag ausgeben $date = "$4 $3 $2"; #Zeit herausfiltern $time = $5; #Zeit weiterverarbeiten, da nur die Startzeit und die Endzeit benötigt werden push (@timeresult, $time); #Erstes Element des Zeit Arrays und letztes Element des Zeit Arrays verwenden wegen Start- und Endzeit $starttime = $timeresult[0]; $endtime = $timeresult[$#timeresult]; #Anforderungselement, wird später mit einer if Funktion versehen $req = $6; #Brwoserelement wird später auch mit einer if Funktion versehen $client = $7; #Kontrolle der einzelnen Zeilen #print "$counter-$1-$date-$time-$6\n"; print "$counter-$1-$date-$time-$6-$7\n"; $counter++; } print "$starttime\n"; print "$endtime\n"; print "$counter\n";