OK mi rispondo da solo: inserendo il primo post scriptum, mi è venuto il dubbio che QUERY_STRING non fosse comunque vuoto, come invece pensavo.

Quindi ho rimosso "exit(1)" dal caso "default" nello switch presente nel secondo if, e così, almeno a prima vista, lo script mi ritorna tutta la pagina html.

Dunque ora la domanda muta: cosa è presente nella variabile QUERY_STRING, se lo script viene richiamato solo con
codice:
http://indirizzoip/cgi-bin/[programma].cgi
?