在 Perl(在 Windows 上)中,我如何确定目录的最后修改时间?
笔记:
opendir my($dirHandle), "$path";
my $modtime = (stat($dirHandle))[9];
导致以下错误:
dirfd 函数在 scriptName.pl line lineNumber 处未实现。
显然,真正的答案只是在目录的路径上调用 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 最终会耗尽内存并停止执行。无论哪种方式,上面都有答案。
my $dir_path = "path_of_your_directory";
my $mod_time = ( stat ( $dir_path ) )[9];
在 CPAN 上使用Win32::UTCFileTime模块,它反映了内置 stat 函数的接口:
use Win32::UTCFileTime qw(:DEFAULT $ErrStr);
@stats = stat $file or die "stat() failed: $ErrStr\n";