2011-01-20 31 views
0

我想制作一个irssi脚本,它会注意到服务器上的新文件,但首先我需要一个Perl脚本,它将返回服务器上的最新文件(带目录列表的apache 2.2.16),并在下一个脚本运行后返回if没有新文件,则以前返回null,或者如果服务器上有新文件,则返回该文件的链接。谢谢你的帮助。返回链接到目录列表上的服务器上的最新文件?

回答

2
  • 记住脚本的开始时间在变$start_time

    您将需要存储一些持久的方式“上次运行时间”(高速缓存,文件,持续会话数据,数据库/ DBM文件)以后。

  • 该脚本产生(使用​​3210你想要的文件的列表中,如果它只是文件中给定的目录,或File::Find如果它在一个目录结构

  • 对于每个文件递归,找到它的创建或修改通过stat通话

  • (哪一个你想要的)时间戳查找使用stat数据的最新文件,如果使用glob列出的文件,通过扫描列表去做;如果File::Find,只是做它的回调记忆的一部分“到目前为止最新看到”文件

  • 检索“上次运行时间”持久性数据

  • 如果找到的最后一个文件是晚于“上次运行时间”,返回链接到该文件。如果不是,则返回null

  • 将脚本的开始时间($start_time)保存为“最后运行时间”的新值,以便您选择撕裂它的任何位置。


UPDATE

如果文件列表是不是本地的(如Web服务器上),则需要更换glob步列出文件(及stat的时间戳)通过抓取包含目录列表的相应HTML页面(例如使用WWW::Mechanize来检索页面,并使用HTML::TwigHTML::Parser来解析HTML并检索文件名和时间戳。还有专门用于读取HTML内容的模块表和我不会感到惊讶,如果CPAN有一个专门解析Apaches文件列表HTML的模块。


UPDATE2

看起来像我的预感是正确的,有可能的模块从mod_autoindex解析HTML输出:File::Listing::apachelibwww-perl发行的一部分)

+0

感谢您的帮助:) – James 2011-01-21 12:19:18

相关问题