Although the has absolutely nothing to do with the Compress::Zlib perl module, I can guess what your problem is.
Assuming the uncompress function you are calling is the one supplied with the zlib library, then that cannot be used to if you are manipulating a zip file. The compress/uncompress functions supplied in zlib manipulate RFC 1950 data streams. For a zip file you need to work with RFC1951 data streams.
To do that you need to use the inflateInit2 and inflate functions supplied with zlib. To get inflateInit2 to work in RFC1951 mode, you need to set the windowBits parameter to -15 (i.e. minus 15).