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.