如何在Perl中获取文件的最后修改日期?
我能够获取最后修改的文件,但我需要使用 Perl 从目录中获取相同日期的文件。我有在 Stack Overflow 问题How to find/cut for only the filename from an output of ls -lrt in Perl中获取最后修改文件的解决方案。
但是如何获取ls -lrt
最新日期而不是时间的输出?
如何在Perl中获取文件的最后修改日期?
我能够获取最后修改的文件,但我需要使用 Perl 从目录中获取相同日期的文件。我有在 Stack Overflow 问题How to find/cut for only the filename from an output of ls -lrt in Perl中获取最后修改文件的解决方案。
但是如何获取ls -lrt
最新日期而不是时间的输出?
这是stat Function
Perl 中的一种情况——从 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>
如果你用ls -lrt
Perl 来获取文件的最后修改日期......你做错了。
正确的解决方案是使用stat
函数或File::Stat
包装它的模块。两者都会为您提供文件上的一堆数据,包括所有三个 utime。
stat
是传统的。要么使用标准内置
my $mtime = (stat $filename)[9];
或者使用File::stat
提供更难忘访问的便利包装器
use File::stat;
my $mtime = stat($filename)->mtime;