Programming Perl

Programming PerlSearch this book
Previous: 7.2.27 File::Basename - Parse File SpecificationsChapter 7
The Standard Perl Library
Next: 7.2.29 File::Copy - Copy Files or Filehandles
 

7.2.28 File::CheckTree - Run Many Tests on a Collection of Files

use File::CheckTree;

$warnings += validate( q{
    /vmunix                 -e || die
    /boot                   -e || die
    /bin                    cd
        csh                 -ex
        csh                 !-ug
        sh                  -ex
        sh                  !-ug
    /usr                    -d || warn "What happened to $file?\n"
});

The validate() routine takes a single multi-line string, each line of which contains a filename plus a file test to try on it. (The file test may be given as "cd", causing subsequent relative filenames to be interpreted relative to that directory.) After the file test you may put "|| die" to make it a fatal error if the file test fails. The default is:

|| warn

You can reverse the sense of the test by prepending "!". If you specify "cd" and then list some relative filenames, you may want to indent them slightly for readability. If you supply your own die or warn message, you can use $file to interpolate the filename.

File tests may be grouped: -rwx tests for all of -r, -w, and -x. Only the first failed test of the group will produce a warning.

validate() returns the number of warnings issued, presuming it didn't die.


Previous: 7.2.27 File::Basename - Parse File SpecificationsProgramming PerlNext: 7.2.29 File::Copy - Copy Files or Filehandles
7.2.27 File::Basename - Parse File SpecificationsBook Index7.2.29 File::Copy - Copy Files or Filehandles