我有两个文本文件,它们需要具有相同的值。
$ diff A.txt B.txt
4a5
> I have this extra line.
$在Perl中打开文件
open (ONE, "<A.txt");
open (TWO, "<B.txt");如何在Perl中实现这样的差异呢?Perl有内置的diff吗?或者我需要使用unix的diff实用程序吗?我不想为此实现我自己的diff算法。
我确实需要关于我的文件在哪里不同的信息,但我不需要使用unix diff实用程序。这只是一个例子。
发布于 2010-08-27 14:12:49
您可以尝试使用Text::Diff
或者,UNIX实用程序也可以是一个选项。
发布于 2010-08-27 16:23:27
如果我只需要知道它们是相同的(即不需要发现它们如何不同),我只需要使用Digest::MD5来查看它们是否得出相同的摘要。两个不同的文件可能具有相同的MD5摘要的可能性非常小,因此您甚至可以尝试使用Digest::SHA1。
如果您想找出哪些行是不同的,那么您可以使用Algorithm::Diff,也许可以与Tie::File结合使用。但是,如果您在目标平台上没有diff工具,也有一个随Algorithm::Diff提供的diff程序。尽管您可以这样做,但您可能只想将它所做的事情复制到子例程中。Text::Diff构建在Algorithm::Diff之上,所以它可能已经想要你想要的了。
发布于 2010-08-27 16:47:34
不,Perl没有内置的"diff“工具。要么使用外部模块,要么使用Perl的数据结构(散列、数组等),或者为这两个文件创建文件句柄,并使用文件句柄(while循环)迭代文件,逐行比较它们。此方法假定您的文件已排序。另一种不太优雅的方法是从Perl调用"diff“,但我建议您不要这么做。
最后,如果Perl不是必须的,只需使用Unix实用程序(编写diff脚本)。
https://stackoverflow.com/questions/3581749
复制相似问题