如何在Perl中获取文件的最后修改日期?

时间:2012-08-17 05:46:42

标签: perl date ls

如何在Perl中获取文件的上次修改日期?

我能够获取最后修改过的文件,但我需要使用Perl从目录中获取相同日期的文件。我有解决方案在Stack Overflow问题 How to find/cut for only the filename from an output of ls -lrt in Perl 中获取最后修改过的文件。

但是如何获取最新日期而不是时间的ls -lrt输出?

3 个答案:

答案 0 :(得分:10)

这是Perl中stat Function的一种情况 - 解析shell命令的输出有点不可移植,非常低效且完全错误。

my $mtime = (stat $file)[9];

如果你真的很绝望,你当然应该使用split function

my $mtimeAsString = join "" (split /\s+/, (`ls -lrt $file`)[0], 8)[5,6];
    # using only the first line of input

随意比较可读性......

答案 1 :(得分:5)

如果你使用ls -lrt来获取Perl中文件的最后修改日期...你做错了。

正确的解决方案是使用stat函数或包装它的File::Stat模块。两者都会为你提供一堆文件的数据,包括所有三个utimes。

答案 2 :(得分:2)

stat是传统的。使用标准内置

my $mtime = (stat $filename)[9];

或者使用提供更难忘访问的File::stat便利包装

use File::stat;

my $mtime = stat($filename)->mtime;