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;