Как я получаю прошлое измененное время файла в Perl?

Исключения обрабатываются более эффективно в Python, чем в Java, что по крайней мере частично , почему вы видите эту конструкцию в Python. В Java более неэффективно (с точки зрения производительности) использовать исключения таким образом.

63
задан cowgod 4 February 2009 в 00:16
поделиться

7 ответов

Можно использовать встроенный модуль File::stat (включенный с Perl 5.004).

Вызов stat($fh) возвраты массив со следующей информацией о дескрипторе файла передал в (от perlfunc страница справочника для stat ):

  0 dev      device number of filesystem
  1 ino      inode number
  2 mode     file mode  (type and permissions)
  3 nlink    number of (hard) links to the file
  4 uid      numeric user ID of file's owner
  5 gid      numeric group ID of file's owner
  6 rdev     the device identifier (special files only)
  7 size     total size of file, in bytes
  8 atime    last access time since the epoch
  9 mtime    last modify time since the epoch
 10 ctime    inode change time (NOT creation time!) since the epoch
 11 blksize  preferred block size for file system I/O
 12 blocks   actual number of blocks allocated

Элемент номер 9 в этом массиве даст Вам прошлый измененный раз с эпохи ( 0:00 1 января 1970 GMT). От этого можно определить местное время:

my $epoch_timestamp = (stat($fh))[9];
my $timestamp       = localtime($epoch_timestamp);

Для предотвращения магическое число 9 необходимых в предыдущем примере дополнительно используйте Time::localtime, другой встроенный модуль (также включенный с Perl 5.004). Это требует некоторого (возможно) более четкого кода:

use File::stat;
use Time::localtime;
my $timestamp = ctime(stat($fh)->mtime);
97
ответ дан gil_mo 7 November 2019 в 12:29
поделиться

Используйте встроенное статистика функция. Или более конкретно:

my $modtime = (stat($fh))[9]
24
ответ дан Michael Carman 7 November 2019 в 12:29
поделиться
my @array = stat($filehandle);

время изменения хранится в формате Unix в $array [9].

Или явно:

my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size,
    $atime, $mtime, $ctime, $blksize, $blocks) = stat($filepath);

  0 dev      Device number of filesystem
  1 ino      inode number
  2 mode     File mode  (type and permissions)
  3 nlink    Number of (hard) links to the file
  4 uid      Numeric user ID of file's owner
  5 gid      Numeric group ID of file's owner
  6 rdev     The device identifier (special files only)
  7 size     Total size of file, in bytes
  8 atime    Last access time in seconds since the epoch
  9 mtime    Last modify time in seconds since the epoch
 10 ctime    inode change time in seconds since the epoch
 11 blksize  Preferred block size for file system I/O
 12 blocks   Actual number of blocks allocated

эпоха была в 0:00 1 января 1970 GMT

[еще 117], информация находится в статистика .

18
ответ дан Peter Mortensen 7 November 2019 в 12:29
поделиться

Вам нужны вызов статистики и имя файла:

my $last_mod_time = (stat ($file))[9];

Perl также имеет другую версию:

my $last_mod_time = -M $file;

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

13
ответ дан Paul Beckingham 7 November 2019 в 12:29
поделиться

Если Вы просто сравниваете два файла для наблюдения, который является более новым затем -C, должен работать:

if (-C "file1.txt" > -C "file2.txt") {
{
    /* Update */
}

существует также -M, но я не думаю, что это - то, что Вы хотите. К счастью почти невозможно искать документацию относительно этих операторов файла через Google.

9
ответ дан Peter Mortensen 7 November 2019 в 12:29
поделиться

Вы могли использовать статистику () или модуль File::Stat.

perldoc -f stat
3
ответ дан Chris Kloberdanz 7 November 2019 в 12:29
поделиться

Я думаю, что Вы ищете stat функция (perldoc -f stat)

, В частности, 9-е поле (10-й, индекс № 9) возвращенного списка является последним, изменяют время файла в секундах с эпохи.

Так:

my $last_modified = (stat($fh))[9];

3
ответ дан Kamal Nayan 7 November 2019 в 12:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: