• Publicidad

Problemas con IO::Socket::INET

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Problemas con IO::Socket::INET

Notapor CarlosID » 2010-07-29 18:41 @820

Buenas,

Estoy haciendo una migración de un aplicación de un servidor a otro, y estoy teniendo un problema con un script en Perl.

Os muestro el código (aunque creo que no es relevante):

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. use IO::Socket::INET;
  4. use CGI qw (-oldstyle_urls :standard);
  5.  
  6. my $query = new CGI;
  7. my @names = $query->param;
  8. print header('text/html');
  9. $url_query = query_string;
  10. my $rhost = $query->remote_addr();
  11.  
  12.  
  13. $http = IO::Socket::INET->new(
  14.     PeerAddr => "localhost:80",
  15.     Proto => "tcp"
  16. );
  17.  
  18. my $url = "/CGI/InterCGI.jsp" . "?" . $url_query . "&ipaccess=$rhost";
  19. $http->print("GET /$url HTTP/1.0\n\n");
  20. my @lineas = $http->getlines();
  21. my $esta = 0;
  22. foreach $linea (@lineas) {
  23.    if ($esta ==1) {
  24.       print $linea;
  25.    }
  26.    if ($linea=~/Content-Type/) {
  27.      $esta = 1;
  28.    }
  29. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Cuando ejecuto el archivo me da el siguiente error:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Can't locate IO/Socket/INET.pm in @INC (@INC contains: /usr/perl5/5.00503/sun4-solaris /usr/perl5/5.00503 /usr/perl5/site_perl/5.005/sun4-solaris /usr/perl5/site_perl/5.005 .) at ./InterCGI line 3.

BEGIN failed--compilation aborted at ./InterCGI line 3
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Por lo que he estado leyendo, creo que falla porque no tengo bien instalado el módulo IO::Socket::INET, sin embargo, no sé cómo instalar bien este módulo, ¿de donde lo descargo? ¿cómo lo instalo? El SO es Solaris 8 y la versión del Perl, la 5.

Por favor, si alguien pudiese echarme una mano se lo agradecería.

Gracias y un saludo.
CarlosID
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2010-07-29 18:30 @812

Publicidad

Re: Problemas con IO::Socket::INET

Notapor explorer » 2010-07-29 18:55 @830

Bienvenido a los foros de Perl en Español, CarlosID.

Efectivamente, CarlosID, el mensaje de error indica que Perl no encuentra ese módulo en ninguno de los directorios por defecto.

Si no lo tienes instalado, debes primero a probar a instalarlo desde el sistema de paquetes de tu Solaris. Mira a ver si aparece como paquete instalable. No se llamará igual que IO::Socket::INET, sino que quizás libio-socket-perl o algo parecido.

Si no lo encuentras, prueba, siendo root, a instalarlo con el comando cpan: cpan IO::Socket::INET

Si no te funciona, entonces debes conectarte a su página: IO::Socket::INET, bueno, más bien a la de la distribución IO. Dentro del fichero README vienen las instrucciones para instalarlo siguiendo tres pasos sencillos.

Comprueba antes el número de versión, en la matriz de sistemas operativos/versiones con tu versión de Perl... que me suena que es del siglo pasado -literalmente-.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problemas con IO::Socket::INET

Notapor CarlosID » 2010-07-29 20:24 @892

Hola explorer, gracias por la rápida respuesta.

He intentado hacer las 3 cosas que me has indicado, pero no he sido capaz:

No he encontrado en los paquetes de mi Solaris nada parecido a libio-socket-perl.

He ejecutado el comando cpan IO::Socket::INET, pero me ha empezado a realizar una serie de preguntas que no sabía contestar, las he pasado todas dando al ENTER, pero al final no ha funcionado.

Por último, me he descargado el paquete. Como bien has dicho mi versión de Perl es del siglo pasado, por lo que he tenido que descargarme la versión IO-1.20. El primer paso me lo ha realizado bien (perl Makefile.PL), pero en el segundo me da el siguiente error:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
# make test
cc -c   -xO3 -xdepend    -DVERSION=\"1.20\" -DXS_VERSION=\"1.20\" -KPIC -I/usr/perl5/5.00503/sun4-solaris/CORE -DI_POLL  IO.c
make: cc: Command not found
make: *** [IO.o] Error 127
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Me he instalado el paquete gcc, que es donde creo que viene el comando cc, pero nada.

¿Se te ocurre algo más?

Muchas gracias y un saludo.
CarlosID
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2010-07-29 18:30 @812

Re: Problemas con IO::Socket::INET

Notapor salva » 2010-07-30 03:03 @168

CarlosID escribiste:Estoy haciendo una migración de un aplicación de un servidor a otro, y estoy teniendo un problema con un script en Perl.

Os muestro el código (aunque creo que no es relevante):


¡Ah, si lo es!

Tu problema es que estás usando Perl 5.005_03, una versión de hace más de diez años y algunas cosas han cambiado desde entonces. En concreto, la que creo que a ti te afecta es cómo se estructuran los módulos de la familia IO::Socket.

Prueba a cambiar la línea que dice use IO::Socket::INET; por use IO::Socket;

De todas formas lo que tendrías que hacer es actualizar tu versión de Perl.

En SUN Freeware podrás encontrar paquetes para tu versión de Solaris.
Avatar de Usuario
salva
Perlero nuevo
Perlero nuevo
 
Mensajes: 200
Registrado: 2008-01-03 15:19 @680

Re: Problemas con IO::Socket::INET

Notapor CarlosID » 2010-07-30 04:10 @215

Gracias salva,

He intentado hacer lo que me has comentado, cambiado sólo la línea 3.

Sin embargo ahora me da este error:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
# ./InterCGI
Content-Type: text/html; charset=ISO-8859-1

Can't call method "print" on an undefined value at ./InterCGI line 19.
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Parece que ha avanzado un poco, pero no del todo... También he probado a cambiar la línea 13, quitando también "::INET"

Y el error en este caso es:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
# ./InterCGI
Content-Type: text/html; charset=ISO-8859-1

IO::Socket: Cannot configure a generic socket at ./InterCGI line 13
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


En caso de instalar una nueva versión, ¿me recomiendas alguna en especial?

Muchas gracias y un saludo.
CarlosID
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2010-07-29 18:30 @812

Re: Problemas con IO::Socket::INET

Notapor salva » 2010-07-30 04:35 @232

CarlosID escribiste:Can't call method "print" on an undefined value at ./InterCGI line 19.

Por alguna razón la creación del socket falla, y como no haces comprobación de errores, el problema no salta hasta que tratas de utilizar el objeto en la línea 19.

Lo que tienes que investigar es por qué falla la creación del socket en la línea 13. Asegúrate de que no tienes problemas de conectividad, que el servidor responde, etc.

CarlosID escribiste:Parece que ha avanzado un poco, pero no del todo... También he probado a cambiar la línea 13, quitando también "::INET"

No, eso no lo tienes que hacer. Tu quieres utilizar la clase IO::Socket::INET, lo que pasa es que en esa antigua versión de Perl, esa clase se define dentro del mismo fichero que IO::Socket y por eso te dije que quitases el ::INET de la sentencia use

CarlosID escribiste:En caso de instalar una nueva versión, ¿me recomiendas alguna en especial?

Pues o la estable más reciente disponible para tu OS o la misma que ya estés utilizando para correr tu programa en otro sitio. En cualquier caso, no te recomiendo nada anterior a la 5.8.8.
Avatar de Usuario
salva
Perlero nuevo
Perlero nuevo
 
Mensajes: 200
Registrado: 2008-01-03 15:19 @680

Re: Problemas con IO::Socket::INET

Notapor explorer » 2010-07-30 05:24 @266

Y... digo yo... ¿no sería más fácil usar el módulo LWP::Simple?

Seguro que ya lo tienes instalado, y con la función get() ya puedes hacer la petición HTTP que estás mostrando en el código.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problemas con IO::Socket::INET

Notapor CarlosID » 2010-07-30 06:30 @312

Hola explorer, salva,

Muchas gracias a los dos.

Explorer: no he llegado a probar tu solución, porque salva tenía razón. La máquina en la que estoy probando no tenía acceso a Internet, por eso no podía abrir la conexión. He cambiado "localhost" por la IP local de la máquina con la que me conectaba y ha funcionado.

Muchísimas gracias, muy buen foro este.

Un saludo.
CarlosID
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2010-07-29 18:30 @812


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado