Вернуть ссылку на самый новый файл на сервере со списком каталогов? - PullRequest
0 голосов
/ 20 января 2011

Я хочу создать скрипт irssi, который будет уведомлять о новых файлах на сервере, но сначала мне нужен скрипт на Perl, который будет возвращать самый новый файл на сервере (apache 2.2.16 со списком каталогов) и после запуска следующего скрипта если более нового файла нет, предыдущий возвращает ноль или, если на сервере есть новый файл, возвращает ссылку на этот файл. Спасибо за любую помощь.

1 Ответ

2 голосов
/ 20 января 2011
  • Запомните время запуска скрипта в переменной $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 дистрибутива)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...