@node File/CheckTree, File/Cmp, File/BasicFlock, Module List
@unnumbered run many filetest checks on a tree


@unnumberedsec NAME

validate - run many filetest checks on a tree

@unnumberedsec SYNOPSIS

@example
use File::CheckTree;
@end example

@example
$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"
@});
@end example

@unnumberedsec DESCRIPTION

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 @code{|| die} to make it a fatal error if the file test fails.
The default is @code{|| 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.

