I got it to work using the -M option of pp as I suggested in my first response. I noticed XML::Parser::Expat was mentioned in the first error you posted from running your script. Adding that module with the -M option fixed the problem.
The pp command that worked was:
pp -o salesforce.exe -M XML::Parser::Expat -l zlib1__.dll -l SSLEAY32_
+_.dll -l LIBEAY32__.dll -l libexpat-1__.dll salesforce.pl
I ran pp in a normal command prompt and ran the exe in a second one where I cleared the 'path' environment variable so that no Perl libraries or modules would be found. Here is what I get from running the exe:
C:\usr\pm\PAR>salesforce.exe
> ORG_IS_SIGNING_UP: org is currently signing up at WWW/Salesforce.pm
+line 110.
<
The script I packed to salesforce.exe is below for reference.
use strict;
use warnings;
use WWW::Salesforce;
eval { WWW::Salesforce->login( 'username' => 'test','password' => '123
+4' ); };
print "> $@ <\n" if $@;