The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
# pmcheck -- check that Perl is set up correctly for Perl modules
# markleightonfisher@gmail.com

# ------ pragmas
use strict;
use warnings;

# ------ define variables
my $dir    = undef;     # directory in @INC
my $errors = 0;         # count of errors found

for $dir (@INC) { 
    if (!-e $dir) {
        print "'$dir' is in \@INC but does not exist\n";
        $errors++;
        next;
    }

    if (!-d $dir) {
        print "'$dir' is in \@INC but is not a directory\n";
        $errors++;
        next;
    }

    if (!-r $dir) {
        print "'$dir' is in \@INC but you cannot read it\n";
        $errors++;
        next;
    }
}

exit($errors != 0);

__END__

=head1 NAME

pmcheck - check that Perl is set up correctly for Perl modules

=head1 DESCRIPTION

pmcheck checks that Perl is correctly set up for Perl modules.
For now, pmcheck just verifies that the entries in @INC
are existing readable directories.

=head1 SEE ALSO

pmdirs(1), pmpath(1)

=head1 AUTHOR and COPYRIGHTS

Copyright (C) 2012 Mark Leighton Fisher.

This is free software; you can redistribute it and/or modify it
under the terms of either:
(a) the GNU General Public License as published by the Free
Software Foundation; either version 1, or (at your option) any
later version, or
(b) the Perl "Artistic License".
(This is the Perl 5 licensing scheme.)