NAME¶
File::CheckTree - run many filetest checks on a tree
SYNOPSIS¶
use File::CheckTree;
$num_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
directives, each 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.
AUTHOR¶
File::CheckTree was derived from lib/validate.pl which was written by Larry
Wall. Revised by Paul Grassie <
grassie@perl.com> in 2002.
HISTORY¶
File::CheckTree used to not display fatal error messages. It used to count only
those warnings produced by a generic "|| warn" (and not those in
which the user supplied the message). In addition, the
validate()
routine would leave the user program in whatever directory was last entered
through the use of "cd" directives. These bugs were fixed during the
development of perl 5.8. The first fixed version of File::CheckTree was
4.2.