I am required to mention that you might consider programming Perl with #!/usr/bin/perl -w, use strict, and (in this case) use CGI. These may make your life easier in the future.
in reply to CGI won't execute GPG properly...
But to your immediate question, why don't you try writing a quick command-line-only version of this? Example:
That way Apache isn't interfering. You can also test your CGI scripts from a command line (so that Apache configuration is not the issue), by running this with perl script.pl. You will have to enter any form information by hand key=value and press return, then this will dump output to STDOUT. Either of these methods will allow you to see the warnings (provided you add -w to your shebang line), which may be very informative. Don't forget to execute these using the same login that the Apache process will have.
my $gpgpath = "/usr/bin/gpg";
my $gpguser = "xxxxxxxx\@xxxxxxxxx.com";
my $filenum = 'set_to_test_path';
$gpgcommand = "$gpgpath --batch --always-trust --eatr -a -r $gpguser -
+o tmpMessages/$filenum.enc -e";
print $gpgcommand, "\n";
my $gpgresults = `$gpgcommand`;
print $gpgresults, "\n";