【问题标题】:Perl : IO::Uncompress::Unzip : getting last modified date of file inside zipPerl : IO::Uncompress::Unzip : 获取 zip 中文件的最后修改日期
【发布时间】:2014-05-21 07:31:36
【问题描述】:

我目前正在使用核心模块 IO::Uncompress::Unzip 来读取 Perl 中 zip 文件的内容。 我之前使用过Archive::Zip,这是一个很棒的模块,并没有让我很头疼,但它并没有捆绑为核心模块。

我想获取压缩在我的 zip 文件中的文件的最后修改时间。 例如,我有以下文件:“test.zip”,其中包含“1.txt”、“2.txt”、“3.txt”。例如,zip 文件是今天最后一次修改的,而 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 $. -> $_";
    }
}

有什么想法或解决方法可以解决我的问题吗?

谢谢!

【问题讨论】:

    标签: perl date zip unzip perl-core


    【解决方案1】:

    你可以试试$u-&gt;getHeaderInfo-&gt;{Time}

    检查所有属性

    use Data::Dumper;
    print Dumper scalar $u->getHeaderInfo;
    

    【讨论】:

    • 非常感谢,您为我节省了很多时间!像魅力一样工作,这就是我用来获取正确时间的方法:ctime($u-&gt;getHeaderInfo-&gt;{Time});
    猜你喜欢
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 2012-07-07
    • 2011-05-20
    • 1970-01-01
    相关资源
    最近更新 更多