Ich muss ein Zip-Archiv nach dem Filtern der Liste der Dateien erstellen, die ich aufnehmen möchte. Vorzugsweise möchte ich, dass das Modul sowohl unter Windows als auch unter Linux funktioniert.Wie kann ich ein Zip-Archiv in Perl erstellen?
Da ich die Liste der Dateien filtern muss, möchte ich nicht wirklich ein externes Programm verwenden. Ich würde lieber keine externen Abhängigkeiten einführen, also kann ich das Skript in eine einzige ausführbare Datei unter Windows kompilieren (mit ActiveState PDK).
Was ich bereits versucht
Bis jetzt habe ich Archive::Zip auf CPAN gefunden verwendet, aber es hat einen großen Fehler auf Windows-Rechner, die Nicht-ASCII-Dateinamen verwenden: die Dateinamen im Archiv, wie sie don wird beschädigt werde nicht in Unicode übersetzt.
Es gibt eine bug report filed dafür, aber es wurde nicht in über 10 Monaten aktualisiert und in der Modul-Dokumentation der Entwickler ist eher nicht hilfreich (der "reparieren Sie Ihren Computer oder loswerden von Windows" Art).
Update:
Dank der Erläuterungen von brian und Alan Haggai Alavi scheint es, dass genug Liebe in Archive::Zip
setzen wird diese Fehler bald raus und haben schließlich ein voll funktionsfähiges Zip-Modul in Windows.
Zip ist ein sehr altes Format und ich bin mir nicht ganz sicher, ob es Nicht-ANSI-Zeichen verarbeiten kann. Wenn die Zielsprache mindestens teilweise das lateinische Alphabet verwendet (dh nicht chinesisch), sollten Sie versuchen, die Dateinamen in ihren lateinischen Standardgegenstücken zu konvertieren. –
Tatsächlich gab es Bestimmungen in der Spezifikation, um die utf8-Version des Dateinamens zu speichern. Sie können es in Anhang D von http://www.pkware.com/documents/casestudies/APPNOTE.TXT lesen –
Haben Sie alle Abhängigkeiten von Archive :: Zip aktualisiert? –