"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]

Reply via email to