[英]Return link to the newest file on server with directory listing?
我想制作一個irssi腳本,該腳本將注意到服務器上的新文件,但是首先我需要Perl中的腳本,該腳本將返回服務器上的最新文件(帶有目錄列表的Apache 2.2.16),並且在下一個腳本運行后(如果有)沒有較新的文件,則上一個返回null,或者如果服務器上有新文件,則返回指向該文件的鏈接。 謝謝你的幫助。
在變量$start_time
記住腳本的開始時間
稍后,您將需要以某種持久方式(緩存,文件,持久會話數據,數據庫/ DBM文件)存儲“上次運行時間”。
讓腳本生成所需文件列表glob()
如果只是給定目錄中的文件,則使用glob()
如果在目錄結構中是遞歸的,則使用File::Find
對於每個文件,可以通過stat
調用找到其創建或修改(無論您要哪個)時間戳。
使用stat
數據查找最新文件。 如果您使用glob
列出文件,請通過掃描列表來完成; 如果File::Find
,則將其作為回調的一部分來進行,以記住“到目前為止所看到的”文件
檢索“上次運行時間”持久數據
如果找到的最后一個文件晚於“上次運行時間”,則返回指向該文件的鏈接。 如果不是,則返回null
將腳本的開始時間( $start_time
)作為新值“上次運行時間”保存到您選擇撕裂它的任何位置。
更新
如果文件列表不是本地的(例如,在Web服務器上),則需要使用包含目錄列表的適當HTML頁面抓取(例如使用WWW::Mechanize
glob
來替換glob
步驟以列出文件(以及時間戳的stat
) WWW::Mechanize
檢索頁面和HTML::Twig
或HTML::Parser
來解析HTML並檢索文件名和時間戳。還有專門用於讀取HTML表格內容的模塊,如果CPAN有一個模塊可以讀取,專門分析列出HTML的Apaches文件。
更新2
看起來我的預感是正確的,並且有一個可能的模塊來解析mod_autoindex的HTML輸出: File::Listing::apache
( libwww-perl
發行版的一部分)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.