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.
When your only tool is a hammer, all problems look like your thumb.