;# $RCSfile: validate.pl,v $$Revision: 4.1 $$Date: 92/08/07 18:24:19 $;# 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.;# Usage:;#	require "validate.pl";;#	$warnings += do validate(';#	/vmunix			-e || die;#	/boot			-e || die;#	/bin			cd;#	    csh			-ex;#	    csh			!-ug;#	    sh			-ex;#	    sh			!-ug;#	/usr			-d || warn "What happened to $file?\n";#	');use File::CheckTree;1;