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
»» Tags verwenden.
Hmm.. merci für den Tip, ist eine überlegeung wert !
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
Hmm.. sowas hatte ich, ging aber nicht !
Es muss so ausehen:
($command,$user,$text)=split(/ +/,$line,3);
Dann funkts !
Mit nem Array hatte es auch nicht funktioniert !
MfG
Andy