summaryrefslogtreecommitdiff
path: root/lib/File/CheckTree.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/File/CheckTree.pm')
-rw-r--r--lib/File/CheckTree.pm39
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/File/CheckTree.pm b/lib/File/CheckTree.pm
index a440bda71e..a39308b6c9 100644
--- a/lib/File/CheckTree.pm
+++ b/lib/File/CheckTree.pm
@@ -2,6 +2,45 @@ package File::CheckTree;
require 5.000;
require Exporter;
+=head1 NAME
+
+validate - run many filetest checks on a tree
+
+=head1 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"
+ });
+
+=head1 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 C<|| die> to make it a fatal error if the file test fails.
+The default is C<|| 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 C<-r>, C<-w>, and C<-x>.
+Only the first failed test of the bunch will produce a warning.
+
+The routine returns the number of warnings issued.
+
+=cut
+
@ISA = qw(Exporter);
@EXPORT = qw(validate);