validate - run many filetest checks on a tree
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 multiline string
consisting of lines containing a filename plus a file test to try on it.
(The file test may also be a ``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. The file test may optionally have a ``!' prepended to test for the
opposite condition. If you do a 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.
Filetests may be bunched: ``-rwx'' tests for all of -r, -w, and -x. Only the first failed test of the bunch will produce a warning.
The routine returns the number of warnings issued.