AndrewMcHorney wrote:
> Hello
Hello,
> I do not have my perl books with me and so I cannot diagnose the error I
> am getting with several if statements. Could someone assist?
Do you have the Perl documentation installed on your hard drive?
perldoc perldiag
> Here is the code:
>
> #! /bin/perl
You can let perl help you find problems by including these two lines:
use strict;
use warnings;
And if you want more verbose warning messages you could include this:
use diagnostics;
> #
> # Create the files to delete list file
> #
>
> #
> # Find all the files
> #
> print "Extracting files in directory";
>
> @file_list = `dir c:/s`;
You should use a module like File::Find to get a list of all your files.
perldoc File::Find
> #
> # Build the list of directories and files
> #
>
> $temp_index = 0;
>
> $file_index = 0;
>
> $directory_index = 0;
>
> $dir_list_size = scalar(file_list);
file_list is a bareword, you probably meant to use the array @file_list.
> while ($temp_index lt $dir_list_size)
'lt' is used for comparing strings, you should use '<' to compare numbers.
> {
>
> chomp file_list(temp_index);
Do you have an lvalue subroutine called file_list defined somewhere?
temp_index is a bareword, you probably want to use a variable there.
> $parse_line = split($temp_index);
That is short for:
$parse_line = @_ = split( /$temp_index/, $_, 0 );
Since $_ is probably empty and you are not using the contents of @_ anywhere
it is hard to figure out what you are trying to do here.
> $file_read = 0;
>
> #
> # Determine if this is a directory and if so add it to the
> # directory array and increment the index
> #
> if ($parse_line[0] == "Directory")
> {
> $directory_list = $parse_line[1];
> $directory_index =$directory_index + 1;
>
>
> }
> else
> {
> $actual_files[file_index] = $parse_line[0];
> $file_size[file_index] = $parse_line[5];
> $file_deleted[file_index] = 0;
file_index is a bareword, you probably meant to use the variable $file_index.
> $file_index = $file_index + 1;
>
> }
>
> $temp_index = $temp_index + 1;
> }
>
> $number_files = scalar(@actual_files);
>
> #
> # Loop through the list of files
> #
> $file_index = 0;
> while ($file_index < $number_of_files)
>
>
[ snip more bareword littered code ]
>
>
> #
> # Process the file list
> #
>
> $compare_file_index = 0;
>
> while ($compare_file_index < $number_actual_files)
> {
> $compare_file_index = $compare_file_index + 1;
> }
Why the loop? Why not just:
my $compare_file_index = $number_actual_files;
John
--
use Perl;
program
fulfillment
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>