On Monday, April 8, 2002, at 12:09 PM, Michael D. Risser wrote:
> On Monday 08 April 2002 11:46 am, bob ackerman wrote: >> On Monday, April 8, 2002, at 11:21 AM, Michael D. Risser wrote: >>> I have an array that contains some filenames that I wish to check for, >>> however >>> I don't seem to be checking the array, at least not in the manner I >>> expect ;-) Here's the relevant offending code: >>> >>> my @lsLib = ("libListTree.a", >>> "libXpm.a", >>> "libfalk.a", >>> "libmysqlclient.a", >>> "libdxclass.so.6.0", >>> "libxg.a"); >>> >>> sub checkLib() { >>> # Pass the directory to check in, and an array containing the >>> filenames >>> # to check for >>> &check($libDir, @lsLib); >>> } >>> >>> sub check() { >>> my ($dir,@toCheck) = @_; >>> my $last = @toCheck; >>> my $i; >>> my $valid; >>> >>> # Go to the directory we need to check >>> print "\nEntering $dir\nChecking for $last files\n"; >>> chdir($dir) or die "Unable to change to $dir: $!\n"; >>> opendir(DIR, $dir) or die "Unable to open $dir: $!\n"; >>> >>> # Loop throught the directory we were passed >>> while(my $file = readdir(DIR)) { >>> # First gid rid of those pesky . and .. things >>> if($file eq "." || $file eq "..") { >>> next; >>> } >>> >>> $valid = 0; >>> # Now loop through the array of filenames we were passed >>> for($i = 0; $i < $last && !$valid; $i++) { >>> # Make sure the file exists >>> if ($file eq $toCheck[$i]) { >>> print "\t\- $file.....OK\n"; >>> $valid = 1; >>> } >>> } >>> >>> ## >>> # $i not valid >>> # >>> if (!$valid) { >>> #if($file ne "." || $file ne "..") { >>> # If its FUBAR add it to the array, and let us know >>> print "\t\- $file.....ERROR\n"; >>> push(@missingFiles,"$dir/$file"); >>> #} >>> } >>> } >>> >>> # Be nice and close our directory handle >>> closedir DIR; >>> } >>> >>> Here's the kicker, it works for aother arrays that I pass, but not the >>> one shown above. The entire script can be found at >>> http://www.visionpro.com/~michael/build-checker.pl >> >> and just what problem are you seeing? > Everything appears as <fileName>.....ERROR even though thay are all > present > you might try a simpler sanity test: $dir = pop; my @lsLib = ("libListTree.a", "libXpm.a", "libfalk.a", "libmysqlclient.a", "libdxclass.so.6.0", "libxg.a"); for (@lib) { print $_,"\n" if -e "$dir/$_"; } make sure you see the files.