in reply to Allowing the over riding of a program's design

This isn't a very scalable approach, and has a dirty feel to me:
if ($roll_your_own == 1) { $ENV{'CONTENT_LENGTH'} = length($cgi->query_string()); open(CGI, "|a_different_script.cgi") or die($!); print CGI $cgi->query_string(); close(CGI) or die($!); }

In its favor, it should pass all of the arguments it receives, and it does so without letting them be evaluated by the shell.

Update: I noticed that the CONTENT_LENGTH value is not necessarily accurate in the receiving script. Reset it before opening the pipe.