Thread Compress::Zlib - Problem mit gzread / gzreadline (4 answers)
Opened by eternion at 2009-02-19 20:39

eternion
 2009-02-19 20:39
#119003 #119003
User since
2008-11-14
4 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich muss mit gzip komprimierte Dateien dekomprimieren und will das momentan mit dem Modul Compress::Zlib machen.

Das Ganze funktioniert eigentlich auch ganz gut ... es funktioniert zu gut: Wenn ich dem Skript eine "falsche" Datei vorwerfe, d.h. eine Datei, bei der sich das Unix Kommando "gunzip" beschwert, daß das keine gz-Datei ist, arbeitet gzreadline munter weiter ohne eine Fehlermeldung (return Wert > 0).

Das Fatale daran: ein Zweck der Komprimierung / Dekomprimierung ist eine Integritätsprüfung, d.h. falls ein paar Bytes verändert wurden (so daß gunzip einen Fehler ausgeben würde), muß das Skript eine Fehlermeldung schreiben.

Ich hab grade keinen Zugriff auf die Maschine, aber hier ein paar Eckdaten:
- Die Perlversion ist so ca. 5.8.3
- Das Betriebssystem HP-UX 11....

Any ideas?

Hier noch der Beispielcode, mit dem ich das Problem auf Ubuntu (Version Schlagmichtot: Wo finde ich die Version bei Ubuntu ...) mit Perl 5.8.8 reproduzieren kann:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use warnings;
use strict;

use Compress::Zlib;

my $file = shift;

my $gz = gzopen( $file, "rb" ) or die "gzopen failed";

my $bytesRead;
my $line;
while( $bytesRead = $gz->gzreadline( $line ) )
{
if( $bytesRead < 0 ){ die "Error: $gzerrno"; }
}

$gz->gzclose();

View full thread Compress::Zlib - Problem mit gzread / gzreadline