0

我的问题归结为,我有同一个 HTML 页面的多个版本,我想知道这个页面是否使用 Perl 进行了更改。这些文件包含 html/javascript 和书面英语。当用户决定他们想要跟踪哪些页面的更改时,这些更改将在 Web 界面中显示给用户。包含网站的服务器上的 Perl 脚本会随着时间的推移下载这些页面并检查它们是否存在差异。

到目前为止,我可以确定页面是否已更改,但不能确定添加或删除的内容。这是通过将文件格式化为仅在它们自己的行上的单词并逐行比较来完成的。我知道更改很可能会被写入,即添加或删除了一个新句子。我希望能够查明这种变化。

我今天花了一段时间尝试使用 Text::ParagraphDiff 但无济于事。我最终得到一个长文件,它多次重复这两个内容但没有突出显示的更改。

所以我想我会问是否有人知道最佳实践或首选方法。我害怕我将不得不开发一些冗长的算法来跟踪文件何时更改以及它们何时再次匹配。

4

2 回答 2

2

我认为您的最佳做法是将这些文件存储在源代码控制系统中,例如 git 或 svn。这样,您就有了可用的文件的版本副本,可用于区分(只需对其进行外壳处理),并恢复可能已丢失/覆盖的任何内容。任何类型的差异都需要您拥有原始文件。为了确定我的生产系统上的文件是否已更改,我使用文件日期/时间戳(mtime 和 ctime 两者)和文件校验和的输出(md5sum -b [file])的组合来获取这些值并保存在档案数据库中。

于 2013-03-05T15:38:09.320 回答
0

在 CPAN检查untemplate实用程序。它通过XPath比较两个(或更多)结构化 HTML 文件,假设它们是使用相同的模板生成的。这是一个典型会话的屏幕截图:

取消模板

于 2013-03-05T22:39:30.070 回答