Запомните время запуска скрипта в переменной $start_time
Позже вам потребуется сохранять «время последнего выполнения» каким-либо постоянным способом (кэш, файл, постоянные данные сеанса, файл базы данных / DBM).
Сценарий должен создать список файлов, которые вы хотите (используя glob()
, если это просто файлы в данном каталоге, или File::Find
, если он рекурсивен в структуре каталога
Для каждого файла найдите его временную метку для создания или изменения (в зависимости от того, что вам нужно) с помощью stat
call
Найдите самый новый файл, используя данные stat
. Если вы использовали glob
для составления списка файлов, сделайте это путем сканирования списка; если File::Find
, просто сделайте это как часть обратного вызова, запоминая файл «последний раз увиденный до сих пор»
Извлечение постоянных данных "последнего запуска"
Если последний найденный файл позже, чем «время последнего запуска», верните ссылку на этот файл. если нет, вернуть null
Сохраните время начала ($start_time
) скрипта как новое значение «времени последнего запуска», куда бы вы ни решили его порвать.
UPDATE
Если список файлов НЕ является локальным (например, на веб-сервере), вам нужно заменить шаг glob
для вывода списка файлов (и stat
для отметок времени) очисткой соответствующей HTML-страницы, содержащей список каталогов. (используя, например, WWW::Mechanize
для извлечения страницы и HTML::Twig
или HTML::Parser
для синтаксического анализа HTML и извлечения имен файлов и временных меток. Есть также модули специально для чтения содержимого таблиц HTML, и я не удивлюсь, если CPAN имеет модуль для конкретного анализа файла Apache с листингом HTML.
UPDATE2
Похоже, моя догадка была верна, и есть возможный модуль для анализа вывода HTML из mod_autoindex: File::Listing::apache
(часть libwww-perl
дистрибутива)