Forum Webscript.Ru
Программирование => Perl => Тема начата: Evgeny от 10 Октября 2002, 19:47:13
-
Привет всем!
Есть следующая проблема: файлы копируются с фтп-сервера ежедневно и только в том случае, если дата их последней модификации позднее, чем локальные файлы.
Фция $ftp->mdtm($file) не работает (понятия не имею почему), вырезаю дату модификации из $ftp->dir($file) (год правда не выдаётся, но не беда).
Но проблема в том, что при копировании файлов, $ftp->get($file) дата модификации устанавливается равной текущей дате, а не той, что на сервере, поэтому в следующий раз я не могу сравнить на равенство даты модификации обоих файлов.
Можно ли заставить объект ftp делать это (перенос даты модификации файла) принудительно, и если да, то как?
Или нужно потом потом самому атрибуты файла изменять, в соответствие с тем, что я dir-ом считал? А как можно изменить дату последней модификации файла?
Огромное спасибо.
-
Боюсь, что заставить ФТП ставить старую дату не удастся. Зато можно попробовать самому:
utime($readtime,$writetime,$filepath);
При этом ты, разумеется, должен иметь право на запись. Как добыть дату? Используй стандартный модуль Time::Local :
use Time::Local;
$time = timelocal($sec,$min,$hour,$dd,$mm,$yy);
, где
$yy = год-1900;
$mm--;
, а под Виндой не забудь установить $sec,$min,$hour равными нулю: файловая система не учитывает времини суток.
Ну вот и все, собственно. С Богом!
-
а под Виндой не забудь установить $sec,$min,$hour равными нулю: файловая система не учитывает времини суток.
Неправда ;) Учитывает.
-
Serchey
...
Ну вот и все, собственно
Спасибо!
-
mike,наверное ты прав - это Юникс, нехароший, не учитывает... :)