如何在Perl中获取文件的最后修改日期?
问题描述:
如何获取Perl中文件的最近修订日期?如何在Perl中获取文件的最后修改日期?
我能够得到最后修改的文件,但我需要使用Perl的目录中的同一日期的文件。我有解决方案获取堆栈溢出问题中的最后一个修改文件How to find/cut for only the filename from an output of ls -lrt in Perl。
但是,如何获取ls -lrt
的输出为最新日期而不是时间?
答
如果您使用ls -lrt
来获取Perl中文件的最后修改日期......您做错了。
正确的解决方案是使用stat
函数或包装它的File::Stat
模块。两者都会给你一堆关于文件的数据,包括所有三次。
答
这是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
随意比较可读性...
答
stat
是传统。无论是使用标准的内置
my $mtime = (stat $filename)[9];
或者使用File::stat
便利的包装
use File::stat;
my $mtime = stat($filename)->mtime;
我使用的统计本身提供更令人难忘的访问。我使用stat如下: my $ dir =