如何在Perl中获取文件的上次修改日期?
我能够获取最后修改过的文件,但我需要使用Perl从目录中获取相同日期的文件。我有解决方案在Stack Overflow问题 How to find/cut for only the filename from an output of ls -lrt in Perl 中获取最后修改过的文件。
但是如何获取最新日期而不是时间的ls -lrt
输出?
答案 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;