2011-01-04 18 views
1

可能性の重複:
How can I use Perl to determine whether the contents of two files are identical?Perlテストに "diff"を含めるには?

私はPerlモジュールのテストを書いていて、例えば私が使用している場合、出力ファイルは、期待されているまさにであることをテストする場合diffのような外部コマンドの場合、diffコマンドを提供しないオペレーティングシステムではテストが失敗することがあります。外部コマンドに依存しない、ファイル上のdiffのような何かを行う簡単な方法は何でしょうか? CPAN上にファイルの差分を行うモジュールがあることを理解していますが、必要がない限りビルドプロセスを複雑にしません。

+0

重複:[2つのファイルの内容が同じかどうかを確認するにはどうすればよいですか?](http://stackoverflow.com/questions/2847914/how-can-i-use-perl-to-determine- 2つのファイルの内容が同じかどうか) – Zaid

+0

@Zaid:それはその質問の正確な複製ではありませんが、それは似ています。 –

+0

この質問を重複して閉じることは、最悪の場合には忙しい気持ちになります。これは他の質問の重複ではありません。 –

答えて

0

なぜ、perlの2つのファイルを読み込んで比較するだけではないのですか?以下のような何か...

sub readfile 
{ 
    local ($/) = undef; 
    open READFILE, "<", $_[0] 
     or die "Can't read '$_[0]': $!"; 
    my $contents = <READFILE>; 
    close READFILE or die "Can't close '$_[0]': $!"; 
    return $contents; 
} 
$expected = readfile("expected_results"); 
$actual = readfile("actual_results"); 
if ($expected != $actual) { 
    die "Got wrong results!"; 
} 

(あなたが複数のOSの移植性を懸念している場合は、いくつかのOSがCRLFの代わりにLFを使用するので、あなたも、あなたのテストプログラムにまたはここのいずれか、行末について何かをする必要があるかもしれませんテキストファイル内の行を区切ります。ここで扱う場合は、正規表現の代わりに置き換えます。

+0

私はもっと短いものを望んでいました。 –

5

ファイルや文字列の違いをテストして調べるときは、私はいつもTest::DifferencesText::Diffを使用しています。私はあなたがおそらくそれを知っていることを知っていて、非モジュールのソリューションを希望しますが、違いを探すには多くのコーナーケースがあります。また、私はこの回答をgooglerのためにもっと書いています(ちょうどあなたがすでにこれらのモジュールを知っている場合)。

私はこのモジュールのtable outputが好きです。差が小さい場合は非常に便利です。

関連する問題