Lesen von komprimierten Daten mittels IO Layer
am 26.09.2006 09:23:56 von Ferry BolharHallo,
ich habe ein Skript zur Auswertung von Logdateien. Bisher lagen
diese ganz normal als ASCII Dateien vor. Aus Platzgründen werden
sie nun einmal pro Woche mittels logrotate zu .gz-Dateien komprimiert.
Ich möchte es nun den Benutzern leicht machen und ihnen möglichst
transparent auch die Auswertung komprimierter Logdateien ermöglichen.
Im Idealfall sollte der Benutzer gar nicht merken, ob nun eine normale
oder komprimierte Logdatei ausgewertet wird.
Ab Perl 5.8 gibt es ja so etwas Nettes wie I/O Layer, die man beim
open-Befehl mit drei Argumenten als 2. Argument angeben kann. Ich
habe versucht, Näheres (Beispiele) herauszufinden, habe aber nichts
Passendes zu meinem Problem gefunden.
Ich weiß natürlich, dass es auch andere Möglichkeiten gibt (open mit
Pipe, den Input durch zcat durchjagen), aber ich denke mir, dass I/O
Layer ja genau zum Lösen solcher Probleme implementiert wurden.
Daher meine Frage: hat sich schon mal jemand damit gespielt, ev.
sogar selbst einen Layer geschrieben? Oder bin ich doch am falschen
Dampfer und sollte besser bei dem Pipe-Ansatz bleiben?
Danke für alle Antworten, und schöne Grüße aus Wien,
Ferry
--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol@adv.magwien.gv.at