Dateieinlesen simulieren
am 10.03.2006 13:56:15 von Volker Pohlers
Hallo,
ich stehe vor folgender Aufgabe:
Ich brauche Informationen über den Typ etc. von Oracle-Export-Dateien.
Wenn man diese zeilenweise einliest, kann man die interessanten Werte
leicht entnehmen. Beispiel:
EXPORT:V09.02.00
UDEMO
RUSERS
8192
0
32
0
g ! Do Mär 9
15:35:15 2006pipe_exp_20060309_demo
Nur werden bei uns die Dumps fast immer mit Z-Compress komprimiert. Ein
Dekomprimierung von einigen GByte
Ich brauche nun etwas Perl-Code (unter Windows), der mir on-the-fly
..Z-Dateien - zumindest die ersten paar Hundert Bytes dekomprimiert - und
diese zeilenweise weiterverarbeiten kann.
Ich habe bereits Code gefunden, der den uncompress-Algorithmus in Perl
nachbildet, aber dann habe ich einen String und eben kein Dateihandle
mehr, aus dem ich zeilenweise lesen kann. Ich könnte nun eine temporäre
Datei anlegen und diese neu öffnen, aber Perl kennt doch sicher
elegantere Wege, oder?
mfg
Volker
Re: Dateieinlesen simulieren
am 10.03.2006 14:14:33 von Frank Seitz
Volker Pohlers wrote:
> Ich habe bereits Code gefunden, der den uncompress-Algorithmus in Perl
> nachbildet, aber dann habe ich einen String und eben kein Dateihandle
> mehr, aus dem ich zeilenweise lesen kann. Ich könnte nun eine temporäre
> Datei anlegen und diese neu öffnen, aber Perl kennt doch sicher
> elegantere Wege, oder?
Du könntest das mit einer Pipe realisieren à la:
open F,"zcat $datei |" or die $!;
while ()
{
...
last if $nun_weiss_ich_genug;
}
close F;
Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Re: Dateieinlesen simulieren
am 11.03.2006 08:25:03 von hjp-usenet2
Frank Seitz wrote:
> Volker Pohlers wrote:
>> Ich habe bereits Code gefunden, der den uncompress-Algorithmus in Perl
>> nachbildet, aber dann habe ich einen String und eben kein Dateihandle
>> mehr, aus dem ich zeilenweise lesen kann. Ich könnte nun eine temporäre
>> Datei anlegen und diese neu öffnen, aber Perl kennt doch sicher
>> elegantere Wege, oder?
>
> Du könntest das mit einer Pipe realisieren à la:
>
> open F,"zcat $datei |" or die $!;
Wobei ich mir nicht sicher bin, ob das unter Windows das gewünschte tut.
Die Suche nach "gzip" auf CPAN sollte aber auf jeden Fall einige brauchbare
Module zutage fördern, z.B. IO::Zlib, Compress::Zlib oder PerlIO::gzip.
hp
--
_ | Peter J. Holzer | Löschung von at.usenet.schmankerl?
|_|_) | Sysadmin WSR/LUGA |
| | | hjp@hjp.at | Diskussion derzeit in at.usenet.gruppen
__/ | http://www.hjp.at/ |
Re: Dateieinlesen simulieren
am 12.03.2006 19:16:50 von KWittrock
"Volker Pohlers" schrieb im Newsbeitrag
news:4411776f$0$12917$9b4e6d93@newsread4.arcor-online.net...
..> ...
> Ich habe bereits Code gefunden, der den uncompress-Algorithmus in Perl
> nachbildet, aber dann habe ich einen String und eben kein Dateihandle
> mehr, aus dem ich zeilenweise lesen kann. Ich könnte nun eine temporäre
> Datei anlegen und diese neu öffnen, aber Perl kennt doch sicher elegantere
> Wege, oder?
>
Hallo Volker,
das Perl-Kochbuch, Rezept 8.23 "So tun, als wäre ein String eine Datei"
empfiehlt das skalare I/O in Perl 5.8:
open($fh, '<', \$string);
Mit <$fh> liest du die nächste Zeile aus $string. Für Einzelheiten wird auf
open in perlfunc und Kap. 29 des Kamel-Buchs verwiesen (habe dort aber auf
die Schnelle nichts zum Thema gefunden).
Gruß
Klaus