Bienvenido a los foros de Perl en español, Vertik.
De forma normal, un CGI recibe una petición por parte del servidor web, lee los argumentos que el usuario y el servidor le mandan, a través de la entrada estándar, y entrega el resultado en la salida estándar. El servidor web enviará la salida hacia el navegador del usuario.
También, de forma normal, esa salida será una página html entera, por lo que el usuario recibe una página, como resultado de su petición.
Hay otras ocasiones en las que podemos usar un CGI para "rellenar" alguna sección de alguna página que se crea de forma dinámica. Esto se consigue con técnicas
SSI del Apache, por ejemplo.
En tu caso, el usuario te envía la información por medio de un
upload. Tal y como lo tienes hecho, el cgi debería responder con una página entera, con un resultado. El qué debe ser ese resultado, lo debes decidir tú. Bien puede ser un mensaje de aviso al usuario de que se va a procesar el fichero enviado, o, si es posible, el cgi comienza el procesamiento del fichero y le va enviando al usuario, línea a línea, un informe de cómo va el asunto (esto no funciona en todos los navegadores).
El sistema Ajax se basa en hacer pequeñas peticiones HTTP de forma asíncrona (si se desea), y con los resultados de esas peticiones se rellenan toda o una parte de la página (con la ayuda de JavaScript que recibe y coloca el contenido).
No entiendo lo que quieres decir con "jugar" con el formulario. ¿Modificarlo?