Wie kann ich ein komprimiertes Archiv in Perl extrahieren?

7

Ich muss Benutzern erlauben, eine Zip-Datei über ein Webformular hochzuladen. Auf dem Server läuft Linux mit einem Apache-Webserver. Gibt es Vorteile, ein Modul wie Archive :: Zip zu verwenden, um dieses Archiv zu extrahieren oder sollte ich einfach ein System ausführen Aufruf an unzip mit Backticks?

    
cowgod 03.11.2009, 16:58
quelle

3 Antworten

14

Laut Archive :: Zip-Dokumentation Sie wären besser dran mit Archive :: Extract :

  

Wenn Sie nur Reißverschlüsse (und / oder andere Archive) extrahieren, sollten Sie sich stattdessen Archive :: Extract ansehen, da es viel benutzerfreundlicher ist und archivspezifische Funktionen ausklammert.

>

Das ist interessant, weil Archive :: Extract versuchen Archiv: Zip zuerst und dann zurück in die unzip Binärdatei, wenn es fehlschlägt. So scheint es, dass Archive :: Zip die bevorzugte Option ist.

Archive :: Zip verwendet Compress :: Raw: : Zlib , welches eine Low-Level-Schnittstelle zur zlib-Systembibliothek ist; Es handelt sich also nicht um eine reine Perl-Implementierung, was bedeutet, dass die Leistung in unzip ähnlich ist. Mit anderen Worten, aus Performance-Sicht gibt es keinen Grund, unzip vor Archive :: Zip zu wählen.

    
Dave Webb 03.11.2009 17:07
quelle
5

Wenn Sie die binäre unzip ausführen, wird Ihr Prozess fork / exec und

  1. instanziiert einen neuen Prozess
  2. verbrauchen mehr Speicher (für die Dauer des erzeugten Prozesses)

Sie müssen auch mit dem korrekten Pfad zu unzip konfigurieren. Angesichts all dessen würde ich den Ansatz der Bibliothek bevorzugen.

    
Brian Agnew 03.11.2009 17:00
quelle
1

Eine Sorge ist mit der Erinnerung. Wir haben den harten Weg gefunden (Produktionsserver abgestürzt), dass Archive::Tar ein Speicherleck hatte. Während also die Verwendung eines Moduls anstelle eines Systemaufrufs zu einem externen Befehl eine gute Idee ist (siehe andere Antworten für Argumentation), müssen Sie sicherstellen, dass das Modul keine Probleme hat.

    
DVK 04.11.2009 02:51
quelle

Tags und Links