No es lo mismo hacer el print() que el exit().
El print() devuelve el $resultado al proceso que le llamó, mientras que exit() es el resultado de la ejecución del CGI al proceso que lo ejecutó, que en este caso es el servidor web. Lo principal es el print().
En cuanto al error, Yo pondría
use CGI::Carp qw(fatalsToBrowser);después del
use CGI; para obtener más información, pero con ese tipo de errores, es posible que ni llegue a ejecutar el CGI.
Según lo que veo,
* El proceso CGI se terminó inesperadamente antes de procesar la petición.
* El proceso CGI tiene un fallo y no devuelve un conjunto completo de cabeceras HTTP.
Qué se puede intentar:
* Comprueba los registros (log) del sistema para ver por qué el proceso CGI se terminó bruscamente.
* Analizar la aplicación CGI para determinar por qué no está enviando el juego completo de cabeceras HTTP.
Intenta ejecutar primero el CGI de forma directa, sin el PHP, desde un navegador, para ver si el CGI devuelve un valor correcto. Para ello, coloca en la dirección del navegador
http://www.mipagina.com/cgi-bin/calculo.pl?Num_operacion=1&Importe=1234mientras que en el CGI, lo reduces a
Using perl Syntax Highlighting
#!/usr/bin/perl
#
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);
print
header,
start_html('PRUEBA'),
p( 'Num_operacion: ' ), blockquote( param('Num_operacion') ),
p( 'Importe: ' ), blockquote( param('Importe') ),
hr,
end_html,
;
Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4
El resultado de la ejecución deberá salir en la página HTML. Como ves, le estoy pasando los valores con argumentos en el mismo URL.
Una vez que esto funcione, es más fácil seguir con la ejecución del resto.
El error 502 podría incluso significar que el calculo.exe no ha podido ser ejecutado por el CGI.