#! perl use strict; use warnings; use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); my $dirname = 'Foo/'; my $filename = 'Bar.txt'; my $zip = Archive::Zip->new(); $zip->addDirectory($dirname); $zip->addFileOrDirectory( { name => $filename, zipName => $dirname . $filename } ); $zip->writeToFileNamed('test.zip') == AZ_OK or die "Write error: $!";