首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Perl中比较两个文件?

如何在Perl中比较两个文件?
EN

Stack Overflow用户
提问于 2010-08-27 14:10:49
回答 4查看 20.8K关注 0票数 8

我有两个文本文件,它们需要具有相同的值。

代码语言:javascript
复制
$ diff A.txt B.txt
4a5
> I have this extra line.
$

在Perl中打开文件

代码语言:javascript
复制
open (ONE, "<A.txt");
open (TWO, "<B.txt");

如何在Perl中实现这样的差异呢?Perl有内置的diff吗?或者我需要使用unix的diff实用程序吗?我不想为此实现我自己的diff算法。

我确实需要关于我的文件在哪里不同的信息,但我不需要使用unix diff实用程序。这只是一个例子。

EN

回答 4

Stack Overflow用户

发布于 2010-08-27 14:12:49

您可以尝试使用Text::Diff

或者,UNIX实用程序也可以是一个选项。

票数 12
EN

Stack Overflow用户

发布于 2010-08-27 16:23:27

如果我只需要知道它们是相同的(即不需要发现它们如何不同),我只需要使用Digest::MD5来查看它们是否得出相同的摘要。两个不同的文件可能具有相同的MD5摘要的可能性非常小,因此您甚至可以尝试使用Digest::SHA1

如果您想找出哪些行是不同的,那么您可以使用Algorithm::Diff,也许可以与Tie::File结合使用。但是,如果您在目标平台上没有diff工具,也有一个随Algorithm::Diff提供的diff程序。尽管您可以这样做,但您可能只想将它所做的事情复制到子例程中。Text::Diff构建在Algorithm::Diff之上,所以它可能已经想要你想要的了。

票数 5
EN

Stack Overflow用户

发布于 2010-08-27 16:47:34

不,Perl没有内置的"diff“工具。要么使用外部模块,要么使用Perl的数据结构(散列、数组等),或者为这两个文件创建文件句柄,并使用文件句柄(while循环)迭代文件,逐行比较它们。此方法假定您的文件已排序。另一种不太优雅的方法是从Perl调用"diff“,但我建议您不要这么做。

最后,如果Perl不是必须的,只需使用Unix实用程序(编写diff脚本)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3581749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档