Как я могу получить дату последнего изменения каталога? - PullRequest
0 голосов
/ 10 декабря 2018

Я использую 5.16.3.Как получить последнюю измененную временную метку каталога?С файлом я могу запустить

    my $deployFile = "$jbossHome/standalone/deployments/$artifactId.$packaging";
    open my $fh, '>', $deployFile or die("File does not exist.");
    my $mtime = (stat ($fh))[9]; 

Я пробовал эту логику с каталогом,

my $mtime = stat("$jbossHome/standalone/deployments/$artifactId.$packaging");

, но результат всегда

Thu Jan  1 00:00:01 1970

, хотя яможет сказать на сервере, что последняя измененная временная метка каталога - это эти выходные.

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Вы можете использовать ядро ​​ File :: stat , чтобы получить более приятный интерфейс для полей статистики.

use strict;
use warnings;
use File::stat;
my $stat = stat($filename) or die "stat $filename failed: $!";
my $mtime = $stat->mtime;
0 голосов
/ 10 декабря 2018

Это:

my $mtime = stat("$jbossHome/standalone/deployments/$artifactId.$packaging");

Должно быть записано как:

my $mtime = (stat("$jbossHome/standalone/deployments/$artifactId.$packaging"))[9];

См. perldoc stat .

stat EXPR возвращает 13-элементный список, содержащий информацию о состоянии файла, либо файла, открытого с помощью FILEHANDLE или DIRHANDLE, либо с именем EXPR.

В полученном списке mtime в 10-мposition (index 9).

А также:

В скалярном контексте stat возвращает логическое значение, указывающее успех или неудачу

Так в вашем кодегде вы оцениваете в скалярном контексте, переменной mtime присваивается значение 1. Когда interpretef используется как метка времени Unix, это означает, что 1 секунда после 1 января 1970 года.

...