2013-03-05 52 views
0

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

到目前为止,我可以识别如果页面已更改,但未添加或删除的内容。这是通过将文件格式化为只在他们自己的行上的文字并逐行比较来完成的。我知道这种变化很可能会被写出来,即新的句子已被添加或删除。我希望能够指出这一变化。

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

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

+0

确定'文字:: ParagraphDiff'是正确的工具,而不仅仅是'文本:: Diff'?无论如何,请显示您尝试用来识别更改的代码。 – 2013-03-05 15:40:29

+0

如果我接近/卡住,我将只给出Text :: Diff去并发布我的发现。感谢 – Chris 2013-03-05 15:44:08

+0

根据您对程序的描述,在下面的Jim Black中,我认为您应该使用版本控制系统并使用Perl来连接它。 – 2013-03-05 15:52:35

回答

2

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

+0

我应该注意到这是为了在Web应用程序中最终使用,用户登录后可以跟踪对在线文件的更改。我会在原始问题中添加更多的上下文,以查看是否有任何其他建议。也许我可能会将两者结合起来,如果我能从源码控制中获得一些有用的文本输出,我可以在Web应用程序 – Chris 2013-03-05 15:40:43

+0

Cool中向用户显示。我可以使用Perl与包含您的时间/校验和信息的数据库以及SVN进行接口,以“查看”对这些文件所做的更改。我将其作为Tripwire之类的内部文件监控系统来使用,并为我们的安全人员提供HTML/Javascript界面​​。 – 2013-03-05 15:43:57

+0

听起来非常复杂,并且是我的深度!我将不得不看着它,谢谢你的信息。 – Chris 2013-03-05 15:57:42

0

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

untemplate

相关问题