File::CheckTree.3perl

Langue: en

Version: 2007-12-18 (debian - 07/07/09)

Section: 3 (Bibliothèques de fonctions)

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.