$result = `curl -d 'var1=$var1&var2=$var2...' $destination`;
or
$result = qx¦curl -d 'var1=$var1&var2=$var2...' $destination¦;
print "content-type: text/html\n\n";
print "$result";
curl sends any data to $destination. The entire response is captured and stored in $result, which you print out.
This can fool you, or add another layer of security, depending on how you see it. The displayed URL in the address bar will be wherever you call curl from. For example, if you're calling curl from [example.com...] and $destination is [wherever.com...] the address bar will NOT read wherever.com - it will still say example.com/test.cgi. The end user will never know you've left the site to do something else.
The reason this is of mention is you have to watch any page links when using curl.
I'll definitely remember about curl, though.
print qq(
<html>
...
<body onload="javascript:document.form1.submit()">
<h1> Redirecting soon... </h1>
<form name="form1" action="myscript.asp" method="post">
<input type="hidden" value="23" name="magical">
</form>
</body>
</html>
);