如何获取目录的上次修改日期?

时间:2018-12-10 20:15:02

标签: perl date timestamp last-modified

我正在使用5.16.3。如何获取目录的最后修改时间戳?有了文件,我就可以运行

    my $deployFile = "$jbossHome/standalone/deployments/$artifactId.$packaging";
    open my $fh, '>', $deployFile or die("File does not exist.");
    my $mtime = (stat ($fh))[9]; 

我使用目录

尝试了这种逻辑
my $mtime = stat("$jbossHome/standalone/deployments/$artifactId.$packaging");

但结果始终是

Thu Jan  1 00:00:01 1970

即使我可以在服务器上告诉您目录的最后修改时间戳是在这个周末。

2 个答案:

答案 0 :(得分:3)

您可以使用核心File::stat来获得更好的统计字段界面。

use strict;
use warnings;
use File::stat;
my $stat = stat($filename) or die "stat $filename failed: $!";
my $mtime = $stat->mtime;

答案 1 :(得分:2)

此:

my $mtime = stat("$jbossHome/standalone/deployments/$artifactId.$packaging");

应写为:

my $mtime = (stat("$jbossHome/standalone/deployments/$artifactId.$packaging"))[9];

请参见perldoc stat

  

stat EXPR 返回一个由13个元素组成的列表,其中提供了文件的状态信息,该文件是通过FILEHANDLE或DIRHANDLE打开的文件,还是由EXPR命名的文件。

在结果列表中,mtime排在第十位(索引9)。

还有:

  

在标量上下文中,stat返回一个布尔值,指示成功或失败

因此,在您的代码中(在标量上下文中进行评估),mtime变量的值分配为1。当将ef解释为Unix时间戳时,这意味着1970年1月1日之后的1秒。