----- Original Message ----- From: "Kprasad" <kpra...@aptaracorp.com>
#!/usr/bin/perl use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); # imports #mkdir "c:/onfly"; my $localdir="c:/onfly"; ## I've two zip files i.e., first.zip and second.zip which respectively contains 3 files and two files and after extraction 'c:/onfly/first' should contain 3 files and c:/onfly/second' should contain 2 files only $obj = Archive::Zip->new(); # new instance opendir(DIR, $localdir) || print "\nerror\n"; my @zipfiles=grep /$ARGV[0].*\.zip/, readdir(DIR); close(DIR); foreach $zipfiles (@zipfiles) { if($obj->read("$localdir/$zipfiles") == AZ_OK) # read file contents { print "$zipfiles\n"; $unzip=substr($zipfiles,0,length($zipfiles)-4); print "$unzip\n"; if($obj->extractTree(undef, "$localdir/$unzip/")){print "Extracting $zipfiles";}} else{die('Error in file!');} } ################################################# ################################################# Maybe you just need to create a different Archive::Zip object for each zip file. Something like (untested): use warnings; use strict; use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); # imports #mkdir "c:/onfly"; my $localdir="c:/onfly"; opendir(DIR, $localdir) || print "\nerror\n"; my @zipfiles=grep /$ARGV[0].*\.zip/, readdir(DIR); close(DIR); foreach $zipfiles (@zipfiles) { my $obj = Archive::Zip->new(); # new instance if($obj->read("$localdir/$zipfiles") == AZ_OK) # read file contents { print "$zipfiles\n"; $unzip=substr($zipfiles,0,length($zipfiles)-4); print "$unzip\n"; if($obj->extractTree(undef, "$localdir/$unzip/")){print "Extracting $zipfiles";}} else{die('Error in file!');} } __END__ I saw this near the end of the Archive::Zip documentation: ## quote ## When not to use Archive::Zip If you are just going to be extracting zips (and/or other archives) you are recommended to look at using Archive::Extract instead, as it is much easier to use and factors out archive-specific functionality. ## end quote ## Cheers, Rob _______________________________________________ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs