2012-08-17 159 views

回答

5

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

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

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 

随意比较可读性...

+0

我使用的统计本身提供更令人难忘的访问。我使用stat如下: my $ dir =

; opendir(my $ DH,$ dir)或者“打开$ dir:$!时出错”;我的%files = map {$ _ =>(stat(“$ dir/$ _”))[9]} grep(!/^\.\.?$/,readdir($ DH)); #print Dumper(%files); closedir($ DH); – pauler 2012-08-17 07:39:55

2

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

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

或者使用File::stat便利的包装

use File::stat; 

my $mtime = stat($filename)->mtime; 
相关问题