Perl: IO::Uncompress::Unzip: получение даты последнего изменения файла внутри zip

В настоящее время я работаю с модулем ядра IO::Uncompress::Unzip, чтобы прочитать содержимое zip-файла на Perl. Ранее я использовал Archive::Zip, который является отличным модулем и не доставлял мне столько головной боли, но он не входит в состав основного модуля.

Я хотел бы получить время последнего изменения файлов, которые были заархивированы в моем zip-файле. Например, у меня есть следующий файл: "test.zip", который содержит "1.txt", "2.txt", "3.txt". Например, zip был последний раз изменен сегодня, тогда как текстовые файлы были изменены неделю назад. Как я могу получить дату последнего изменения каждого сжатого файла в моем почтовом индексе? Я мог бы сделать это очень легко с Archive::Zip, но не с этим модулем..

Вот код, который я использую:

use strict;
use warnings;
use IO::Uncompress::Unzip qw($UnzipError);

my $zipfile  = 'test.zip';
my $u = new IO::Uncompress::Unzip $zipfile
   or die "Cannot open $zipfile: $UnzipError";
for (my $status = 1; $status > 0; $status = $u->nextStream) {
    my $name = $u->getHeaderInfo->{Name};
    # my $date = ctime(stat($u)->mtime); -> This doesn't work, even though $u is considered as a filehandle in the IO::Uncompress::Unzip documentation.. 
    warn "Processing member $name\n" ;

    while(<$u>) {
        print "Line $. -> $_";
    }
}

Любые идеи или обходные пути для решения моей проблемы?

Спасибо!

1 ответ

Решение

Ты можешь попробовать $u->getHeaderInfo->{Time}

Проверьте все атрибуты с

use Data::Dumper;
print Dumper scalar $u->getHeaderInfo;
Другие вопросы по тегам