Yes. If you use my Archive::Zip module, you can easily zip or unzip files. There is the additional Archive::Zip::Tree module that knows about doing whole directory trees. Ignore CPAN.pm if it says that Archive::Zip doesn't exist; they screwed up the indexing recently and I don't know if they fixed it yet. If you have trouble getting Archive::Zip, you can get it directly from CPAN at http://www.cpan.org/modules/by-authors/id/N/NE/NEDKONZ/Archive-Zip-0.11.tar.gz.
in reply to Zip up and email
Then look at MIME::Tools for how to put it into an email message, or Net::FTP for sending it.