我的问题归结为,我有相同HTML页面的多个版本,我想知道这个页面是否已使用Perl更改。这些文件包含html / javascript和书面英文。更改将在Web界面中显示给用户,因为用户决定要跟踪更改的页面。包含网站的服务器上的Perl脚本会随着时间的推移下载这些页面并检查它们之间的差异。
到目前为止,我可以识别如果页面已更改,但不能识别添加或删除的内容。这是通过将文件格式化为仅在他们自己的行上的单词并逐行比较来完成的。我知道可能会写入更改,即添加或删除了新句子。我希望能够确定这一变化。
我今天花了一些时间尝试使用Text :: ParagraphDiff,但无济于事。我最终得到一个长文件,多次重复这两个内容,但没有突出显示的更改。
所以我想我会问是否有人知道最佳做法或首选方法。我很害怕我将不得不开发一些冗长的算法来跟踪文件何时发生变化,以及它们何时再次匹配。
答案 0 :(得分:2)
我认为您最好的做法是将这些文件存储在源代码控制系统中,例如git或svn。这样你就拥有了可用的文件的版本副本,可用于diff(只是shell),并恢复任何可能丢失/覆盖的内容。任何类型的差异都需要您拥有原始文件。要确定我的生产系统上的文件是否已更改,我使用文件日期/时间戳(mtime和ctime)的组合以及文件校验和的输出(md5sum -b [file])这些值被采用并保存在档案数据库中。
答案 1 :(得分:0)
检查CPAN上的untemplate实用程序。它将两个(或更多)结构化HTML文件按XPath进行比较,假设它们是使用相同的模板生成的。这是典型会话的屏幕截图: