#!/usr/bin/perl -w use File::Find; use Digest::MD5 qw(md5_hex); my @dirs = sort glob("cms*"); my %files; foreach my $dir (@dirs) { chdir($dir) or die $!; my @files = sort (glob("*.tmpl"), glob("*.pl")); foreach my $file (@files) { open(my $fh, '<', $file) or die $!; my $text = join('', <$fh>); my $md5 = md5_hex($text); $files{$file}{$dir} = $md5; } chdir('..') or die $!; } print ',', join(', ', @dirs), "\n"; foreach my $file (sort keys %files) { my %key; my $next = 'A'; my @row = $file; foreach my $dir (@dirs) { my $md5 = $files{$file}{$dir}; if ($md5) { push(@row, ((exists $key{$md5}) ? ($key{$md5}) : ($key{$md5} = $next++))); } else { push(@row, ''); } } print join(', ', @row), "\n"; }