The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

# output a list of:
#  a) files listed in MANIFEST which don't exist
#  b) files which exist but which aren't in MANIFEST

use strict;
use warnings;
use File::Find;

open my $fh, 'MANIFEST' or die "Can't read MANIFEST: $!\n";
my @files = map { (split)[0] } <$fh>;
close $fh;
for (@files) {
    print "$_ from MANIFEST doesn't exist\n" if ! -f;
}
my %files = map { $_ => 1 } @files;
find {
    wanted => sub {
        my $x = $File::Find::name; $x =~ s/^..//;
        return if -d;
        return if $_ eq '.gitignore';
        return if $x =~ /^\.git\b/;
        print "$x\t\tnot in MANIFEST\n" if !$files{$x};
    },
}, ".";