Ten en cuenta una cosa: las líneas 90 a 92 no las puede rellenar Perl, porque... Show_HTML es llamada solo cuando se llama por primera vez al CGI (la primera vez o cada vez que recargamos la página), y en esos momentos, Perl no sabe los valores de esas variables (son inicializadas dentro de la subrutina perl_func(), que solo es llamada desde el código JavaScript de la página HTML).
Así que mientras esté funcionando el proceso Ajax, el intercambio de información entre el programa Perl y la página HTML es a través del js_func(), llamando a perl_func(), y devolviendo el resultado
solo en el campo 'mate'.
Lo que puedes hacer es declarar js_func() para que guarde los resultado devueltos por perl_func() en varios <div>. Y en perl_func, devolver varios valores escalares con los resultados.
Algo así (no probado):
En el código HTML:
Using javascript Syntax Highlighting
onkeyup="js_func( ['val1'], ['mate', 'nivel', 'grado', 'grupo'] )">
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Using html4strict Syntax Highlighting
<div id="nivel"></div>
<div id="grado"></div>
<div id="grupo"></div>
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
En el código Perl:
Using perl Syntax Highlighting
return $stream_select, $nivel, $grado, $grupo;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
De esta manera, en cada invocación Ajax, el navegador recibe cuatro valores y los coloca cada uno en su elemento correspondiente.
Ahora bien... estás obteniendo los resultados en tres <div>... y seguro que no quieres eso... lo querrás seguir teniendo en tres campos <input>, para enviarlos con el formulario cuando el usuario pulse Continuar.
Solución: En perl_func() crea el código HTML que contenga esos valores.
Using javascript Syntax Highlighting
onkeyup="js_func( ['val1'], ['mate', 'resultado'] )">
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Using html4strict Syntax Highlighting
<div id="resultado"></div>
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Using perl Syntax Highlighting
return $stream_select,
qq(<a href="capt1_faltas2bis.pl?CGISESSID=$CGISESSID&grupo=$grupo&nivel=$nivel&grado=$grado">Continuar</a>);
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Ahora, lo que estamos generando en cada Ajax, es el enlace Continuar, con los valores reales de $nivel, $grupo y $grado.
Pero (esto no ha terminado): un enlace <a> no se "lleva" los valores de un formulario consigo mismo, así que el valor del <select> se pierde. Es mejor que el enlace Continuar se convierta en un <input type="submit">, y la URL generada por perl_func(), sea el 'action' en el <form>.
Ale, a trabajar...