/usr/bin/env GATEWAY_INTERFACE='CGI/1.1' REQUEST_METHOD='GET' PATH_INFO='/extra/path/elements' QUERY_STRING='name1=value1&name2=value2' /srv/www/cgi-bin/some.cgi
####
#!/bin/bash
export GATEWAY_INTERFACE='CGI/1.1'
export REQUEST_METHOD='GET'
export PATH_INFO='/extra/path/elements'
export QUERY_STRING='name1=value1&name2=value2'
exec /srv/www/cgi-bin/some.cgi
####
#!/usr/bin/perl
# called as wrapper.pl name1 arg1 name2 arg2 ...
use strict;
use warnings;
sub encode
{
my $value=shift;
$value=~s/([^A-Za-z0-9._-])/sprintf('%%%02X',ord $1)/ge;
return $value;
}
$ENV{'GATEWAY_INTERFACE'}='CGI/1.1';
$ENV{'REQUEST_METHOD'}='GET';
$ENV{'PATH_INFO'}='/extra/path/elements';
my @pairs;
while (@ARGV) {
my $name=encode(shift @ARGV);
my $value=encode(shift @ARGV);
push @pairs,"$name=$value";
}
$ENV{'QUERY_STRING'}=join('&',@pairs);
exec('/srv/www/cgi-bin/some.cgi') or die "exec failed: $!";