As with almost everything else, there is a Perl module on CPAN that does exactly that: Archive::Zip
--> http://search.cpan.org/~adamk/Archive-Zip-1.24/lib/Archive/Zip.pm
If you don't want to (or can't) install new modules, then it depends on which platform you're on. On Linux, you usually have "zip" and "unzip" executables in your path. In that case, you could just call them using system(), for example:
system("unzip -d directory thezipfile.zip");
On Windows... I'm not sure. There may or may not be zip/unzip commands; or you may have to use third party software like WinZip or (better) 7zip.
Hope that helped.