"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
You are doing _waaay_ too much work to see if a file exists.
sub check() {
my $dir = shift;
for my $file ( @_ ) {
if ( -e "$dir/$file" ) {
print "\t- $file.....OK\n";
}
else {
print "\t- $file.....ERROR\n";
push @missingFiles, "$dir/$file";
}
}
}
John
--
use Perl;
program
fulfillment
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]