Not quite sure what you want to achieve but I'm guessing that you want to add text files to a zip archive without preserving the original directory structure.
Zip::Archive needs to know the path as well as the file name, how else can it find it? You don't need to keep a separate array of the short names, you calculate it when required.
use Archive::Zip; use File::Find; use File::Basename; my $sourceDir = 'C:/sourceDirectory/One'; my $destDir = 'C:/destinationDirectory/Two/'; my @files; find( \&files_to_archive, $sourceDir ); my $zip = Archive::Zip->new(); foreach my $file (@files) { $zip->addFile( $file, basename $file ) } if ($zip->writeToFileNamed("$destDir/textFiles.zip") != AZ_OK) { print "Error creating archive!\n"; } else { print "Archive successfully created!\n"; } sub files_to_archive { push @files, $File::Find::name if (/\.txt$/); }
In reply to Re: Zipping an array problem
by hipowls
in thread Zipping an array problem
by mountaingoat
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |