Perl で2つのテキストファイルの差分をみるには
UNIX のコマンドでテキストファイルの差分箇所を抽出するには diff が便利です。 そしてこれはもちろん Perl でも行うことができます。 以下に3通りのdiffに対応したPerlコードを示します。
一致しているかどうかだけ分かればよい場合
を使います。
例:
実行結果:
$ cat A Boys Hello, and Boys $ cat B Boys Hello, and Girls $ perl digest_hd5.pl --f1 A --f2 B Files do not match.
差分も含め抽出したいとき
Text::Diff を使います。 このモジュールは Algorithm::Diff を利用して作成されています。
例:
実行結果:
$ perl text_diff.pl --f1 A --f2 B *** DIFF *** *** A Tue Oct 7 12:46:37 2014 --- B Tue Oct 7 12:46:37 2014 *************** *** 1,4 **** Boys Hello, ! and Boys --- 1,4 ---- Boys Hello, ! and Girls
改行単位で順不同でファイル間に差分があるかを表示したいとき
Tie::File を使ってファイルを配列にすることでこの差分を見ることができます。
例:
実行結果:
# A, B は改行単位で順不同ではファイル間に差分はない $ cat A Boys Hello, and Boys $ cat B Boys Hello, and Boys $ perl text_diff.pl --f1 A --f2 B Files match!!!