Desculpe, mas eu não entendo CGI não é PHP, é Perl e isso requer suporte a Perl / CGI não PHP. Scripts PHP possuem extensões .php, não .cgi / .fcgi.
Talvez eu tenha perdido alguma coisa aqui. Você pode esclarecer ainda mais a questão. Gosta do servidor da web que você está usando? Este código PHP está embutido no script .cgi ou?
***** EDIT *****
Então você pode olhar para CGI como uma interface, na sua interface de caso que usa Perl. Você não pode misturar o PHP no ambiente CGI, mas pode modificar o script .cgi para fazer uma chamada externa para o script .php.
Isso pode ser feito de poucas maneiras:
- comando system ()
- comando exec ()
- usando alças
- usando backticks
O HTML "funciona" normalmente porque o HTML é interpretado pelo navegador e o PHP é uma linguagem do lado do servidor que deve ser executada em um ambiente adequado.
Eu proponho ler mais sobre como o Perl executa scripts externos: