Thread Verständisfrage Array! Logfile! (14 answers)
Opened by Alexander at 2012-04-14 16:01

bloonix
 2012-04-14 18:30
#157492 #157492
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
2012-04-14T14:01:11 Alexander
Ich dachte mir, dass ich einem Array diesen Fielhandle zuweise, weil
-jeder Eintrag automatisch in einer Zeile ist?
-mit Foreach kann ich dann Zeile für Zeile abarbeiten


Also so würde ich das auf keinen Fall machen und kann dir
davon nur abraten, denn das Skript ist nur dann sinnvoll
nutzbar, wenn das Logfile sehr klein ist.

Logfiles können mehrere Gigabytes groß sein, selbst wenn sie
täglich rotiert werden. Somit würde ich das Skript so schreiben,
dass es für ein Logfile mit X-beliebiger Größe eingesetzt
werden kann.

Code: (dl )
1
2
3
4
5
open my $fh, "<", $log or die "unable to open file '$log' - $!";
while (my $line = <$fh>) {
# Zeile verarbeiten...
}
close $fh;


Dann ist natürlich die Frage, was du mit den verarbeiteten Zeilen
machst. Möchtest du nur bestimmte $Dinge zählen, oder sogar Daten
aus dem Logfile für eine spätere Verarbeitung zwischenspeichern?
Wenn du die Zeilen für weitere Zwecke wiederverwenden möchtest,
dann solltest du dir sogar Gedanken machen, diese in einer
anderen Datei abzulegen, denn auch hier könnte ansonsten dein RAM
explodieren :-)

Code: (dl )
1
2
3
4
5
6
7
8
9
open my $in, "<", $log or die "unable to open file '$log' - $!";
open my $out, ">", $result or die "unable to open file '$log' - $!";
while (my $line = <$in>) {
if ($line =~ $regex) {
print $out $line;
}
}
close $in;
close $out;


Wenn du einfach nur bestimmte $Vorkommnisse zählen möchtest,
sollten diverse Counter kein Problem sein. Wichtig ist, dass
du immer OOM im Hinterkopf behälst.

Cheers.
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.

View full thread Verständisfrage Array! Logfile!