Изменение временных меток

В тех редких случаях, когда вам нужно «соврать» другой программе относительно времени последнего обращения или модификации файла, функция utime придет вам на помощь. В первых двух аргументах передается новое время последнего обращения и модификации, а остальные аргументы содержат списки имен файлов, которым назначаются эти временные метки. Время задается во внутреннем формате. Одно из характерных значений временных меток – «прямо сейчас» (то есть текущий момент времени) – возвращается в нужном формате функцией time. Допустим, вы хотите, чтобы все файлы в текущем каталоге выглядели так, словно они были созданы сутки назад, а первое обращение к ним произошло только сейчас. Это делается так:

my $now = time;
my $ago = $now - 24 * 60 * 60; # Количество секунд в сутках
utime $now, $ago, glob "*"; # Время последнего обращения - сейчас,
# модификация - сутки назад

Разумеется, ничто не мешает создать файл с временной меткой, обозначающей произвольный момент в будущем или прошлом (в пределах диапазона временных меток UNIX от 1970 до 2038 года или диапазона вашей системы, если только в ней не используются 64-разрядные метки). Например, вы можете использовать эту возможность для создания каталога, в котором будут храниться черновики вашего романа о путешествиях во времени. Третьей временной метке (ctime) при любых изменениях файла всегда задается текущее время, и изменить ее функцией ctime невозможно (она вернется к текущему времени сразу же после изменения). Дело в том, что метка ctime предназначена для инкрементной архивации данных: если атрибут ctime файла новее времени на ленте с архивом, файл необходимо заархивировать снова.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Perl на эту тему:
Альтернативный синтаксис глобов
Глобы
Дескрипторы каталогов
Изменение разрешений
Операции с файлами и каталогами

Вернуться в раздел: Perl / 12. Операции с каталогами