Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/11/2003, 21:18
tejas
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 21
Antigüedad: 21 años, 10 meses
Puntos: 0
¿Por qué no funciona mi CGI?

En Windows 2000 tengo instalado Perl 5.8.0 y Apache 2.

Recien estoy empesando a escribir scripts CGI.

Cuando los ejecuto con la interfaz de linea de comando me funcionan bien, pero cuando los ejecuto con una dirección URL, ya no me funcionan. Pero si les agrego las siguientes lineas en el código, si funcionan con dirección URL:

use CGI qw(:standard);
print header();


Por ejemplo, tengo el siguiente script de nombre "miscript.pl":

#!E:\Perl\bin\perl5.8.0.exe

$var = 234;
print ("$var");

Lo guardo en el directorio cgi-bin

Al intentar ejecutarlo ingresando la dirección http://localhost:8080/cgi-bin/miscript.pl, surge el siguiente mensaje de error:
"[error] [cliente 127.0.0.1] F:/Archivo de programa/Apache Group/Apache2/cgi-bin/miscript.pl is not executable; ensure interpreted script have "#!@ first line.
[error] [client 127.0.0.1](9)Bad file descriptor: don't know how to spawn child process: F:/Archivos de programa/Apache Group/Apache2/cgi-bin/miscript.pl"

Pero si le agrego las dos lineas mencionadas anteriormente sin cambiar el resto del código sí muestra el resultado deseado ( 234).
El codigo que si funciona es el siguiente:

#!E:\Perl\bin\perl5.8.0.exe

use CGI qw(:standard);
print header();

$var = 234;
print ("$var");

Nota.- He observado que ambas versiones de código si funcionan cuando los ejecuto a través de la línea de comando:

F:\> perl F:\Archivos de programa\Apache Group\Apache2\cgi-bin\miscript.pl

Mis pregunta son:
a) ¿Por qué tengo que agregar "use CGI qw(:standard); print header();" para que funcione con dirección URL?
b) ¿Existe alguna forma para que funcionen sin necesidad de agregar las lineas indicadas?

Todo comentario es bien recibido.