in reply to Archive::Zip - what am I missing?

I get almost the same error:
Can't locate object method "_writeToFileHandle" via package "image2.gi +f" (perhaps you forgot to load "image2.gif"?) at /usr/lib/perl5/site_ +perl/5.8.5/Archive/Zip/Archive.pm line 280.
I added a warn line around line 280 in Archive.pm:
282 foreach my $member ( $self->members() ) { 283 use Data::Dumper; 284 warn ("DEBUG: member: " . Dumper($member)); 285 my $retval = $member->_writeToFileHandle( $fh, $fhIsSe +ekable, $o 285 ffset );
and it spits out:
DEBUG: member: $VAR1 = 'image2.gif'; Can't locate object method "_writeToFileHandle" via package "image2.gi +f" (perhaps you forgot to load "image2.gif"?) at /usr/lib/perl5/site_ +perl/5.8.5/Archive/Zip/Archive.pm line 285.
To me it looks like $member is a scalar string when it should have been a ref to a Archive::Zip::Member or something. I suggest you investigate this a little further and file a bug report.
--
Andreas

Replies are listed 'Best First'.
Re^2: Archive::Zip - what am I missing?
by Anonymous Monk on Apr 10, 2008 at 10:38 UTC
    No, doc says replaceMember( $memberOrName, $newMember )
      In that case I would suggest a little input validation:
      $ diff -ubB /usr/lib/perl5/site_perl/5.8.5/Archive/Zip/Archive.pm Arch +ive.pm --- /usr/lib/perl5/site_perl/5.8.5/Archive/Zip/Archive.pm 2007-1 +1-07 14:02:23.000000000 +0100 +++ Archive.pm 2008-04-10 13:06:07.000000000 +0200 @@ -134,6 +134,11 @@ sub replaceMember { my ( $self, $oldMember, $newMember ) = @_; $oldMember = $self->memberNamed($oldMember) unless ref($oldMember +); + + if (ref($oldMember) ne q{Archive::Zip::Member}){ + die q{First argument to replaceMember() must be ref to Archive +::Zip::Member}; + } + return undef unless $oldMember; return undef unless $newMember; my @newMembers =
      --
      Andreas