in reply to Re^2: Archive::ZIP - Zip selection of files
in thread Archive::ZIP - Zip selection of files

Why would you use Archive::Zip to get the names of the files not yet in the archive?

Use File::Find to get the names of the files not in the archive.

  • Comment on Re^3: Archive::ZIP - Zip selection of files

Replies are listed 'Best First'.
Re^4: Archive::ZIP - Zip selection of files
by gmaniac (Initiate) on Apr 10, 2015 at 09:42 UTC
    Because I would have to compare the source folders/files with those in the archive. To much code in my opinion. All I want is the script selecting - let's say - 300 files, adding them to an archive and deleting the source files from its source folders. Then execute again. Next 300 files ... and so on, up until the source folders are empty and one (now big archive) is written. I'm still wondering why the script is totally ignoring the selection of entries in the array.

      Have you considered what ->addTree is actually doing? It is not a function that purely returns information.

      I think you should rethink your approach and consider getting two lists, one list of the files in the archive and one list of the files not in the archive, then eliminate the members in both lists (see perlfaq4) and then add the appropriate number of remaining files to the archive.

        Thank you for your reply. You're right. But
        @files = $zip->memberNames();
        does exactly what I want. I have all the file names and paths in the array. And with:
        @file = splice @files, 1, 50;
        I reduce the information before it's written to an archive. I want to select before I write and have the names, that's why comparing is not my goal. It's curious why
        foreach $line (@file) { $fileend = (split(/\./,"$line"))[-1]; if (($fileend eq "jpg") || ($fileend eq "txt")) { $zip->addFile("$line"); }
        doesn't do the job. Any explanation to this?