In my previous post I used -f for missing file, but -f is for a file
present so it would either go into a else, or check which one is the
missing file flag, I think it's -e :-/

Etienne

Bob Showalter wrote:
> 
> > -----Original Message-----
> > From: Michael D. Risser [mailto:[EMAIL PROTECTED]]
> > Sent: Thursday, November 08, 2001 11:01 AM
> > To: [EMAIL PROTECTED]
> > Subject: Comparison problem
> >
> >
> > I have a script which in part takes a list of files in a
> > directory (the name
> > of each file is a number), sorts them numerically, and then
> > runs through each
> > file checking to see if any are missing, and performing a set
> > action if it is
> > missing, or a different action if it is present.
> >
> > My problem is my script is only performing the "missing"
> > action, regardless
> > of whether or not the file is present.
> >
> > Could some one tell me where I went wrong?
> >
> > chdir($ARGV[0]) or die "Unable to enter directory: $!\n\n\n";
> >
> > # Get a list of filenames to process
> > opendir(THIS, '.') or die "Cannot open directory: $!\n\n\n";
> > my @filenames = readdir(THIS) or die "Unable to get list of
> > files: $!\n\n\n";
> >
> > # Need to sort the filenames so that they get processed in
> > numeric order;
> > # this ensures that bugs are automatically assigned the right bug ID #
> >
> > my @fileNames = sort {$a <=> $b} @filenames;
> >
> > # Get the number of files to process
> > my $numFiles = @fileNames;
> >
> > #|--Remove Before Flight-->
> >     print "Number of files to process: $numFiles\n";
> >     print "Press any key to continue, Ctrl-C to exit\n";
> >     chomp(my $in=<STDIN>);
> > #<--Remove Before Flight--|
> >
> > my $j = 1;
> > # Go through each file we found
> > for(my $i = 0; $i <= $numFiles;$i++) {
> >     if ($file != $j) {
> >       print "Sending missing for file: $i";
> >       &sendMissing;
> >       $j++;
> >       next;
> >     }
> > }
> 
> Where is $file set? If you're trying to set it to $fileNames[i],
> you're going to have a problem, because @fileNames will have
> the names of directories as well as files (including '.' and '..')
> 
> So @fileNames may look like:
> 
>   [0] = "."
>   [1] = ".."
>   [2] = "0"
>   [3] = "1"
> 
> See the flaw?
> 
> Also, if a file is missing, $numFiles will be the number of files
> actually there, which is less than the number you need to check.
> 
> An alternate approach might be to use -f to test for file existence:
> 
>    for (0 .. $max) {
>        if (-f) {
>            print "$_ exists\n";
>        } else {
>            print "$_ doesn't exist\n";
>        }
>    }
> 
> This avoids having to read the files into an array. But how do you
> determine $max? From the files that are there? Fine, but what if
> the last file is missing?
> 
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to