Subject: | [Archive::Zip] Impossible unzip a encrypted file.Impossible set password if use read create Zip Object. |
Date: | Fri, 26 Sep 2014 09:13:02 +0000 |
To: | "bug-Archive-Zip [...] rt.cpan.org" <bug-Archive-Zip [...] rt.cpan.org> |
From: | Yang Zhipeng-VJN634 <VJN634 [...] motorolasolutions.com> |
Hi,
When I use perl to unzip a zip file, which is encrypted, as the Web(https://metacpan.org/pod/Archive::Zip#Archive::Zip-Methods). I got the error message" Can't locate object method "password" via package "Archive::Zip::ZipFileMember" at .\unzip.pl line 16." And my script code as attached.
And then, I checked the code of .pm files. I found that if I want to set password, I should get a Member object, but the method memberNamed() return a object of ZipFileMember, because when I use constructor create a Zip Object, it calls read() method, and in read() method, it calls readFromFileHandle(), but in readFromFileHandle(), it create member like this "my $newMember = $self->ZIPMEMBERCLASS->_newFromZipFile( $fh, $fileName, $self->eocdOffset() );", and then "push( @{ $self->{'members'} }, $newMember );".
So, you see, if anyone use read to create Zip object, he gets the ZipFileMember objects, rather than Member objects, and he can't set password with these objects.
I can't suggest any thing, because I haven't read all codes. I hope this issue can be fixed as soon as possible.
Thanks.
Best regards
N|Z
Message body is not shown because sender requested not to inline it.