Not sure that makes sense to me. If your application can depend on opensource Perl and opensource Archive::Zip, why can't it depend on opensource zip and just system("zip") with appropriate args from Perl?
I certainly prefer to write Perl instead of execs where possible for performance/reliabilty reasons, but in this case Archive::Zip definitely is not as functional or elegant for doing exactly what you're trying to do here.