Perl File :: stat输出问题,需要显示日期

时间:2014-11-07 20:30:15

标签: perl

我遇到了让File :: stat输出文件的最后修改日期的问题。到目前为止,这是我的代码:

#!/usr/bin/perl
use Time::localtime;
use File::stat;
use warnings;
use File::Find;



my $dirloc = 'E:\tmp\testdir';

sub find_txt {
    my $F = $File::Find::name;
    if ( ! -d $F && $F =~ /.tar|.exe|.zip/ ) {  
        my @result = $F;

        foreach my $result (@result){
            my $timestamp;
            $timestamp = (stat("$result"))->[9] or die "No $_: $!";
            print "$result : $timestamp\n";

        }
    }
}


find({wanted => \&find_txt}, $dirloc);

输出的内容如下:

C:/tmp/testdir/foo/bar/test.tar:1415305933

我需要输出代替(日期格式不一定是列出的内容,我只想查看日期):

C:/tmp/testdir/foo/bar/test.tar:11/07/2014

我知道它给我的输出是自纪元以来的时间,但我认为stat应该给出日期。难道我做错了什么?谢谢!

编辑:我尝试了本地时间,我得到:时间:: tm = ARRAY(0x245b220),不确定那里发生了什么

1 个答案:

答案 0 :(得分:1)

您可以使用localtime(注意:不是Time::localtime)函数将时间戳转换为有用的内容

my $date = localtime $timestamp

将使其成为人类可读的字符串,如Fri Nov 7 15:33:00 2014

或者您可以在列表上下文中将其用于将其吐入单个字段:

my($sec, $min, $hour, $day, $month, $year, $weekday, $yearOfDay, $isDST) = localtime $timestamp