Как в Perl определить размер файла внутри архива gzip без распаковки всего файла?

У меня есть куча смехотворно больших файлов (размером в несколько гигабайт) с очень высокой степенью сжатия (1: 200 или лучше). Я должен их обработать и хотел бы хотя бы показать какую-то оценку прогресса. По этой причине я хотел бы знать размер файла внутри .gz, чтобы я мог сравнить его с тем, что я уже вытащил.

Однако, поскольку распаковывать весь файл заранее каждый раз довольно непозволительно и бесполезно, я хотел бы вычислить размер, не делая этого.

Я знаю, что это возможно. Я могу просто открывать файлы gzip с помощью Total Commander, и плагин просмотра покажет мне нужный размер. (Я знаю, что он не распаковывается, потому что он сразу показывает мне размер, что было бы невозможно с файлом размером 10 ГБ внутри gzip.)

Вероятно, есть некоторые поля заголовка, которые содержат эту информацию.

Однако просматривая документацию по различным модулям CPAN я не мог найти ничего, что подходило бы по счету. IO :: Uncompress :: Gunzip позволяет мне получить заголовок , но он не содержит информации о размере файла. struct Foo {Foo (значение T) {} }; int main () {Foo MyFoo (123); возврат 0; } ошибка: отсутствует ...

Следующий код генерирует ошибку компиляции в Xcode:

template 
struct Foo
{
    Foo(T Value)
    {
    }
};

int main()
{
    Foo MyFoo(123);
    return 0;
}

ошибка: отсутствуют аргументы шаблона перед 'MyFoo'

Изменение Foo MyFoo (123); на Foo MyFoo (123); устраняет проблему, но не должен ли компилятор определить соответствующий тип данных?

Это ошибка компилятора, или я неправильно понимаю неявные параметры шаблона?

13
задан Maxpm 9 February 2011 в 16:00
поделиться