in reply to Re: Range File Open
in thread Range File Open

OK, but how can I pass the range of files to be open to this array?

Replies are listed 'Best First'.
Re^3: Range File Open
by amarquis (Curate) on Mar 04, 2008 at 14:33 UTC

    You already have some code to scan through your directory and decide whether or not you want a file, so all you have to do is push the file into the array at the end of a similar loop. Something like the following:

    while (my $file = readdir(DIR)) { #decide whether or not this is a file the user wants ... push @files, $file; }

    Then you can use stiller's loop to iterate through that list, opening each file for processing.

      How to get the range, lets say, in this directory I have 30 files, from day 1 to day 30, form this dropdown menu I select from day 5 to day 25, and then do the processing, open all the files between day 5 and day 25, how can I do that on this code?

        Well, you'd fill in the...

        #decide whether or not this is a file the user wants ...

        ... section with code that checked the files in the directory against what the user has selected. For example, you might look at the date part of the filename, and see if it is in the range that you get from the variables you already pull out of the user query ($get_file_from and $get_file_to)

        In pseudocode:

        foreach file in the directory { get the date from the filename check if it is in the $get_file_from to $get_file_to range if so, add it to @files } later foreach @files { open and process }
Re^3: Range File Open
by stiller (Friar) on Mar 04, 2008 at 14:38 UTC
    Edit: amarquis idea is better than the following, I didn't look through your code to notice what he saw....

    you could use

    my @files; if (-d $x_file) { # $x_file is a directory, not a file @files = glob "$x_file/*xml"; } elsif ($x_file =~ /xml$/ and -e $x_file){ # $x_file is an xml-file, and we have access to it push @files, $x_file; } else { die("can't make sense out xml-directory or xml-file $x_file"); }
    Or File::Glob, File::Find, ...