我遇到了让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),不确定那里发生了什么
答案 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