Hallo Edi!
aber in welcher variable werden die einzelne zeilen gespeichert ? und wie entwerfe ich dann eine tabelle , in der das ganze gespeichert wird ?!
Also, ein bisschen im Perl-Kapitel selber lesen solltest Du schon...
Hast Du das Beispiel mit split() gesehen? Im Beispiel gibt es einen Skalar $Satz der aus einem String aus 8 Wörtern besteht, getrennt durch je ein Leerzeichen.
Und was gibt Deine Datei her? Jede Zeile besteht aus 6 -ich sage mal- Feldern, getrennt durch je ein Semikolon. Dieses Trennzeichen (das Semikolon) gilt es zu entfernen, die Werte in den Feldern wollen beibehalten werten. Deswegen anstatt das Array mit @Wörter zu definieren, wie im SELFHTML-Beispiel, werden die 6 benötigten Variablen in einem "namenslosen" Array definiert (als Variablen-Name habe ich die Bezeichnung genommen, die Du vorhin genannt hast):
(my $dvname, my $sut, my $release, my $testcase, my $startdate, my $starttime) = split(/;/ , $Zeile);
Im regulären Ausdruck im ersten Parameter von split erkennst Du das Semikolon, das nicht mehr gebraucht wird.
Aber $Zeile, was ist das? Nun, ich habe meine Erklärung von hinten angefangen. Da Struppis Einwand berechtigt wird und es unnötig ist, große Mengen an Daten in den Speicher zu laden, wird die Datei Zeilenweise mit while eingelesen:
open(DATEI,"<$Name") || die "Konnte Datei nicht öffnen, weil: $!";
while(<DATEI>) {
my $Zeile = $_;
chomp $_;
(my $dvname, my $sut, my $release, my $testcase, my $startdate, my $starttime) = split(/;/ , $Zeile);
print "<tr><td>$dvname</td><td>$sut</td><td>$release</td><td>$testcase</td><td>$startdate</td><td>$starttime</td></tr>\n";
}
close DATEI;
So könnte es dann aussehen:
print <<"DELIM";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>log-Ausgabe von $Monatstag/$Monat/$Jahr</title>
<meta http-equiv="refresh" content="300";>
</head>
<body>
<table>
<tr><th>Verkäufer</th><th>Bla</th><th>blubb</th><th>Foo</th><th>Startdatum</th><th>Startzeit</th></tr>
DELIM
open(DATEI,"<$Name") || die "Konnte Datei nicht öffnen, weil: $!";
while(<DATEI>) {
my $Zeile = $_;
chomp $_;
(my $dvname, my $sut, my $release, my $testcase, my $startdate, my $starttime) = split(/;/ , $Zeile);
print "<tr><td>$dvname</td><td>$sut</td><td>$release</td><td>$testcase</td><td>$startdate</td><td>$starttime</td></tr>\n";
}
close DATEI;
print <<"DELIM";
</table>
</body>
</html>
DELIM
^Auch wenn hier das Ende des Scripts sein sollte, gehört nach dem Endbegrenzer eine Leerzeile.
Die Tabelle kannst Du mittels CSS selbst formatieren - Border sollte auf jeden Fall vorhanden sein, erhöht die Lesebarkeit. 5 Sekunden für ein Refresh ist zu kurz, dann hat der Auftraggeber nicht die Zeit, sich die Tabelle anzuschauen, schon wird sie neu geladen. Hinzu kommt, dass wenn diese Logs sehr lang sind, der Browser schon Zeit brauchen wird, die Tabelle überhaupt zu rendern. Den Wert habe ich auf 300 Sekunden (5mn) geändert.
Viele Grüße aus Frankfurt/Main,
Patrick