在Perl中(在Windows上)如何确定目录的上次修改时间?
注意:
opendir my($dirHandle), "$path";
my $modtime = (stat($dirHandle))[9];
导致以下错误:
dirfd函数未在scriptName.pl line lineNumber。
中实现
答案 0 :(得分:3)
使用CPAN上的Win32::UTCFileTime模块,它反映了built-in stat function的界面:
use Win32::UTCFileTime qw(:DEFAULT $ErrStr);
@stats = stat $file or die "stat() failed: $ErrStr\n";
答案 1 :(得分:3)
显然,真正的答案只是在目录路径上调用stat(而不是在目录句柄上,因为很多例子你会相信)(至少对于windows来说)。
示例:
my $directory = "C:\\windows";
my @stats = stat $directory;
my $modifiedTime = $stats[9];
如果您想将其转换为本地时间,您可以这样做:
my $modifiedTime = localtime $stats[9];
如果你想在一行中完成所有操作,你可以这样做:
my $modifiedTime = localtime((stat("C:\\Windows"))[9]);
另外,Win32 UTCFileTime perl模块有一个语法错误,可以防止perl模块被正确解释/编译。这意味着当它包含在perl脚本中时,该脚本也将无法正常工作。当我将所有执行任何操作的实际代码合并到我的脚本中并重试它时,Perl最终耗尽内存并执行暂停。无论哪种方式都有上面的答案。
答案 2 :(得分:3)
my $dir_path = "path_of_your_directory";
my $mod_time = ( stat ( $dir_path ) )[9];