Mjpaddy has asked for the wisdom of the Perl Monks concerning the following question:

Hello Folks

I'm kind of confused in Archive::Zip module

My question is how do I extract multiple zip file from multiple directories and from multiple zip archive read content of specific file and write to one file

Directory structure

tmp/dir1/abc.zip
tmp/dir2/cde.zip
tmp/dir3/fgh.zip
tmp/dir4/ijk.zip

Zip Structure

Each zip consist two file ex. input.txt & input.doc
Now I wanted to read "input.txt" from all zip archive and write its content into one "tmp/output.txt"

I think I clear my question.

Any suggestion will work for me. Thanks in advance.

My pseudo code

Define sub extract_zip defined array with dir path foreach path define $zip object using Archive::Zip Read members of all archive. foreach member condition apply if $member =~ /input\.txt/ $extractFilename = "tmp/output.txt"; extract file with memberOrZipName => $member,name => $extractFilename return $extractFilename which supposed to consist of all content from +all "input.txt" file.

Replies are listed 'Best First'.
Re: How to read multiple files from multiple zip archive.
by haukex (Archbishop) on Dec 19, 2016 at 12:28 UTC

      Hi Hauke,

      Thanks for replying. Yes I read documentation and I search lots of code for it but my issue is not to extract the member the issue is apply condition on member name and read all its content and write it into output file

      Complexity level is looping, because I need to read 4 directory and each directory has 4 zip files and each zip file has 2 files (.txt & .doc) and I need to read all .txt file and write into output.txt

        Hi Mjpaddy,

        So what code have you tried?

        For getting a list of files, glob may be helpful. And the Archive::Zip documentation says: "One can use Archive::Zip::MemberRead to read the zip file archive members as if they were files."

        Regards,
        -- Hauke D