use LWP::UserAgent; use HTTP::Request::Common; use Digest::MD5::File qw(file_md5_hex); use File::Slurp; #text file to upload my $text_file = 'file.txt'; #calulate Content-MD5 Header my $md5hash = file_md5_hex($text_file); #read file my $file_contents = read_file($text_file); #fields to post my %post_parameters = ( 'a' => 'red', 'b' => 'blue', 'c' => 'green' ); $ua = LWP::UserAgent->new(); $ua->agent('Blah/Perl'); $req = new HTTP::Request 'POST','http://amazonmws.blah'; $req->content_type('text/xml; charset=iso-8859-1'); $req->header( 'Content-MD5' => $md5hash ); $req->content([%post_parameters]); $req->add_content($file_contents); $res = $ua->request($req);