2016-04-23 5 views
-1

Ich habe ein Perl-Skript, das ich möchte für den Benutzer in der Lage zu wählen, ob die Ausgabe in Gzip oder Nur-Text-Datei ist. Ich benutze Perl IO::zlib und die Idee wäre, den Namen der Ausgabedatei zu überprüfen, und wenn es eine .gz Erweiterung hat, verwenden Sie Gzip, ansonsten drucken Sie einfach im Klartext. Ich verwende einen Befehl wie:perl IO :: zlib print Nur-Text-Datei

my $EXCL = new IO::Zlib;

$EXCL->open($out_file, (substr($out_file, -3) eq '.gz' ? "wb9" : "wT")) || die("ERROR: cannot open EXCL file!") if($out_file);

aber die Ausgabedatei wird immer komprimiert! Mache ich etwas falsch?

Dank,

Antwort

1

Warum mit IO :: Zlib für unkomprimierte Dateien überhaupt?

my $fh; 
if (substr($out_file, -3) eq '.gz') { 
    $fh = IO::ZLib->new($out_file) or die "Error opening $out_file: $!"; 
} else { 
    open $fh, '>', $out_file or die "Error opening $out_file: $!"; 
} 

ich nicht fand jeden wT Modus in http://search.cpan.org/~tomhughes/IO-Zlib-1.10/Zlib.pm oder http://search.cpan.org/~pmqs/IO-Compress-2.069/lib/Compress/Zlib.pm

PS: Es ist immer gut, die Dateinamen und Systemfehler ($!) In einer Datei zu öffnen ähnlichen Fehlermeldung zu schließen.

+0

Ich dachte daran, aber es wäre schöner/einfacher, alles auf einen Befehl zu haben. Wie für die "wT" -Option, dachte ich, Zlib würde die C zlib Bibliothek verwenden und in ihrem Handbuch heißt es: Der Modus Parameter ist wie in fopen ("rb" oder "wb") kann aber auch eine Komprimierung enthalten level ("wb9") oder eine Strategie [...] 'T' fordert transparentes Schreiben oder Anhängen ohne Komprimierung an und verwendet nicht das gzip-Format. – FGV

+0

IO :: ZLib-> neu erstellt komprimierte Dateien. Es ist nicht sinnvoll, den Inhalt ohne Grund durch ein zusätzliches Modul zu leiten, auch wenn es reinen Text ausgeben könnte. – Sebastian