相关疑难解决方法(0)

如何使用Perl来确定两个文件的内容是否相同?

这个问题来自于需要确保我对代码所做的更改不会影响它输出到文本文件的值.理想情况下,我会滚动一个子来接收两个文件名,return 1或者return 0取决于内容是否相同,空格和所有内容.

鉴于文本处理是Perl的强项,比较两个文件并确定它们是否相同(代码低于未经测试)应该非常容易.

use strict;
use warnings;

sub files_match {

    my ( $fileA, $fileB ) = @_;
    open my $file1, '<', $fileA;
    open my $file2, '<', $fileB;

    while (my $lineA = <$file1>) {

        next if $lineA eq <$file2>;
        return 0 and last;
    }

    return 1;
}
Run Code Online (Sandbox Code Playgroud)

我能想到的唯一方法(没有CPAN模块)是打开有问题的两个文件,并逐行读取它们直到找到差异.如果没有找到差异,则文件必须相同.

但这种方法有限且笨拙.如果两个文件中的总行数不同怎么办?我应该打开和关闭以确定行数,然后重新打开以扫描文本?呸.

我没有看到perlfaq5中与此有关的任何内容.我希望远离模块,除非它们带有核心Perl 5.6.1发行版.

perl comparison file

14
推荐指数
2
解决办法
8535
查看次数

标签 统计

comparison ×1

file ×1

perl ×1