- NAME
- SYNOPSIS
- DESCRIPTION

# NAME

validate - run many filetest checks on a tree

# SYNOPSIS

        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"
        });

# 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 || 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.