http://qs321.pair.com?node_id=963824


in reply to String replacement preparation for file comparison

TJRandall:

I recently had a problem where someone *radically* reformatted a package, and I had to add one of their patches to the non-screwed-up version. So to find the differences, I reformatted *both* versions and diffed the results. Then I could identify *what* the changes were, so I went back to my original version and applied the appropriate patch.

The reformatter was trivial: I eliminated all line breaks, then I inserted line breaks after each semicolon and comma, like so:

$ cat squidge.pl #!/usr/bin/perl use strict; use warnings; use File::Slurp; my $INFName = shift or die "Missing file name"; my $t = read_file($INFName); $t =~ tr/\n\r/ /; $t =~ s/;/;\n/g; $t =~ s/,/,\n/g; open my $FH, '>', $INFName . ".out" or die; print $FH $t, "\n";

Then I used GNU diff, telling it to ignore whitespace differences and such:

diff -abiwEB --strip-trailing-cr file1 file2

If you're just trying to identify files that differ, this might do the trick for you.

...roboticus

When your only tool is a hammer, all problems look like your thumb.

Replies are listed 'Best First'.
Re^2: String replacement preparation for file comparison
by TJRandall (Sexton) on Apr 06, 2012 at 14:04 UTC

    This is a great approach - thank you! This fixes my "other" compare problem (differences flagged in Text::Diff on carriage returns). I still have to figure out the first "fix" - taking the function/package/procedure name and making sure it is:

    CREATE OR REPLACE FUNCTION "TRON2000"."<name>" AS.

    Thank you again!