Thomas Holzeisen: Perl: Graphische auswertung und satz splitten

Beitrag lesen

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