簡體   English   中英

如何在Windows上獲取Perl中目錄的上次修改時間?

[英]How can I get the last modified time of a directory in Perl on Windows?

在Perl(在Windows上)如何確定目錄的上次修改時間?

注意:

 opendir my($dirHandle), "$path";
 my $modtime = (stat($dirHandle))[9];

導致以下錯誤:

dirfd函數在scriptName.pl line lineNumber中未實現。

在CPAN上使用Win32 :: UTCFileTime模塊,它反映了內置的stat函數的接口:

use Win32::UTCFileTime qw(:DEFAULT $ErrStr);
@stats = stat $file or die "stat() failed: $ErrStr\n";

顯然,真正的答案只是在目錄路徑上調用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];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM