我想制作一个irssi脚本,它会注意到服务器上的新文件,但首先我需要一个Perl脚本,它将返回服务器上的最新文件(带有目录列表的apache 2.2.16)并在下一个脚本运行之后如果没有更新的文件,则previous返回null,或者如果服务器上有新文件,则返回该文件的链接。谢谢你的帮助。
答案 0 :(得分:2)
记住脚本在变量$start_time
稍后您将需要以某种持久方式(缓存,文件,持久会话数据,数据库/ DBM文件)存储“上次运行时间”。
让脚本生成您想要的文件列表(如果它只是给定目录中的文件,则使用glob()
;如果在目录结构中递归,则使用File::Find
对于每个文件,通过stat
调用
使用stat
数据查找最新文件。如果您使用glob
列出文件,请通过扫描列表来执行此操作;如果File::Find
,只需将其作为回忆的一部分,记住“迄今为止见过的最新文件”
检索“上次运行时间”持久数据
如果找到的最后一个文件晚于“上次运行时间”,则返回该文件的链接。如果没有,则返回null
将脚本的开始时间($start_time
)保存为“上次运行时间”的新值,以选择撕掉它。
<强>更新强>
如果文件列表不是本地的(例如在Web服务器上),则需要替换glob
步骤以列出文件(以及stat
以获取时间戳),并抓取相应的HTML包含目录列表的页面(使用例如WWW::Mechanize
来检索页面,使用HTML::Twig
或HTML::Parser
来解析HTML并检索文件名和时间戳。还有专门用于读取HTML内容的模块如果CPAN有一个模块可以解析专门的Apaches文件列表HTML,我就不会感到惊讶。
<强> UPDATE2 强>
看起来我的预感是正确的,并且有一个可能的模块来解析mod_autoindex的HTML输出:File::Listing::apache
(libwww-perl
发布的一部分)