0

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

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

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

4

3 回答 3

11

这是stat FunctionPerl 中的一种情况——从 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

随意比较可读性……</p>

于 2012-08-17T05:52:51.760 回答
5

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

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

于 2012-08-17T05:52:34.797 回答
2

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

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

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

use File::stat;

my $mtime = stat($filename)->mtime;
于 2012-08-20T10:36:03.657 回答