Hi Andreas,
Ich denke ich kann dir weiterhelfen. Ich habe zum Auswerten des Server-Logs meiner Webseite ein vergleichbares Script geschrieben.
Zum 1.
Um eine Statistik als Balkengrafik darzustellen gibt es eine ganz einfache Lösung. Erstelle ein GIF-Bild von 16x16 Punkten mit der Farbe die die Balken haben sollen und lade es auf deinen Server.
Wenn du die Statistik ausgibst erstelle eine HTML-Tabelle mit unsichtbaren Rahmen und sovielen Zellen wie du Werte ausgeben willst. z.B. 31 Zellen nebeneinander für die Tage eines Monats. Verwende VALIGN=BOTTOM zur Ausrichtung. In jeder Zelle zeigst du das Bild mit <IMG SRC=/IMAGES/DOT.GIF WIDTH=16 HEIGHT=$height ALT=$value> an. (Hoffentlich filtert das Forum dieses tag nicht :)
$value ist der einzelne Wert, $height die Höhe in pixel.
Um herauszufinden wie hoch das Bild werden soll mußt du zuerst den höchsten Wert in der Liste finden. Ich mach das mit:
$max=1
foreach (@values)
{
if ($max<$_) {$max=$_}
}
Als nächstes mußt du das Verhältniss von Wert/Pixel definieren.
z.B. '$dot=150 / $max' für 150 Pixel.
Der Wert von $height ist also 'int($value*$dot)'. Verwende Int um die Kommastellen zu entfernen.
Wenn du die einzelnen Balken untereinander ausgibts kannst du auf Tabellen verzichten und <br> Tags verwenden.
Zum 2.
Das ist schnell erklärt, Um existierende strings in Arrays zu zerlegen ist Split() die richtige wahl.
split(/ +/,$string) zerlegt einen String in einzelne Elemente. / +/ bedeutet das ein oder mehrere Leerzeichen als Seperator gelten.
Die ganze Routine sähe ungefähr so aus:
foreach $line (@log)
{
($command,$user,$text)=split(/ +/,$line);
...
}
Du kannst anstelle des linken ausdrucks auf ein Array angeben.
Das wars,
CU Thomas