use Net::FTP; `/usr/bin/zip -r zipfile.zip /directory/to/zip/`; #-r means recurse my $ftp = Net::FTP->new("some.host.name", Debug => 0); $ftp->login("anonymous",'me@here.there'); $ftp->cwd("/incoming"); $ftp->put("zipfile.zip"); $ftp->quit; #### use Mail::Sender; `/usr/bin/zip -r zipfile.zip /directory/to/zip/`; #-r means recurse my $sender = new Mail::Sender {smtp => 'mail.yourdomain.com', from => 'your@address.com'}; $sender->MailFile({to => 'some@address.com', subject => 'Here is the file', msg => "your message here.", file => 'zipfile.zip'});