Пробежался глазами, хотел что-то сказать про то, что битность платформы в данном случае не должно быть непреодолимым препятствием, лишь бы выводить продукт сжатия на диск своевременно, и иметь разумный размер входного буфера. Потом увидел, что автор поучаствовал в WinRar, и передумал что-то говорить: тут какая-то засада собственно в перловом скрипте или библиотеке (де)компрессии.
Да, разумеется. Итс окей, как говорят у нас на ист косте, мы открыты для обсуждений. Засада в старом формате zip архива, который имел определенные лимиты (ну кому в 89-м году пришло бы в голову что 65535 файлов в одном зипе может не хватить). Про 2Гб тоже, чисто ограничения формата. Т.е. просто там 32-битные длины в оффсетах и когда размер превышает лимит они тупо переполняются и начинают писать файл с нулевого оффсета. Zip-овцы давно уж придумали новый "64bit" формат. Проблема в том что товарищи, ответственные за Archive::Zip модуля для Perl его так и не имплементировали. Хотя распаковывать 64bit-ный формат можно через IO::Uncompress, модуля сжатия нет. Можно было б прикрутить вызов внешней утилиты, но это отстой и непереносимость между ОС. Вкратце так.
Comments 10
Reply
Reply
Спасибо за развёрнутое объяснение. Рошаль большой молодец.
Reply
Reply
Leave a comment