• Publicidad

Can't use an undefined value as a HASH reference at

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Re: Can't use an undefined value as a HASH reference at

Notapor explorer » 2013-04-26 05:18 @262

Pero... ¿cómo sabes que, cada vez que haces un dump, estás sacando el mismo objeto CGI? Si dices que de uno a otro desaparece una entrada en el hash, yo apuesto a que no son el mismo objeto. ¿Por qué? Pues porque en todo el código de CGI.pm no hay ni una sola línea en la que se borre la entrada '.tmpfiles'.

Hay una manera de confimarlo: edita el archivo CGI.pm. Busca por sub new, que es el método que se ejecuta cada vez que se crea un objeto CGI. Y al principio de ese método pones una línea así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     warn "Creación de un objeto CGI";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

A partir de ese momento, ese texto saldrá en el error.log por cada objeto CGI que se cree (también puedes usar algún otro método de registro). Y estarás seguro de cuántos objetos se crean y cuando.

Entonces, el objetivo es reducir la creación de esos objetos, y si es posible, reducirlos a uno solo. Si es UploadEasy exige ser el primero en ejecutarse, para descargarse los archivos, pues una vez que ha terminado le pides que te dé el objeto CGI que ha usado, y lo reusas para CGI::Application.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Publicidad

Re: Can't use an undefined value as a HASH reference at

Notapor danimera » 2013-04-30 07:19 @346

lastimosamente me quedó imposible detectar el error.

Pero subí toda la aplicación a otro servidor, y sí me corre perfectamente bien sin ningún problema y bueno, estoy revisando a ver si puede ser problemas con alguna versión del CGI ya que no se me ocurre más...

No puedo hacer más ni cambiar la función, porque es un desarrollo en producción, y pues me quita mucho tiempo ya eso, lo único quizás usar otro módulo para subir imágenes, pero que ojalá funcione idéntico, el caso es que si a alguien le pasa este problema... pues este mensaje le sirva de guía... por ahora prefiero pasar todo a otro servidor y no hacer otra cosa...
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Re: Can't use an undefined value as a HASH reference at

Notapor danimera » 2013-04-30 07:34 @357

Bueno...

Definitivamente solucioné el problema. Era la versión del CGI.

En los otros servidores tenía la versión 3.63 y el servidor con problemas, la 3.15.

Así que la respuesta es:

Si trabajas con CGI::Application y CGI::UploadEasy, la versión de tu CGI debería ser la 3.63. De lo contrario podría fallar como en mi caso... :wink:
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Re: Can't use an undefined value as a HASH reference at

Notapor HIRONAKAMURA » 2015-06-20 10:32 @481

Tengo el mismo problema, mi versión de CGI.pm es la 3.63 y aún así sigue con error.

¿Alguna otra solución?

Mi código es el siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/opt/lampp/bin/perl
  2. use strict;
  3. use CGI qw(:standard);
  4.  
  5. my $q=new CGI;
  6. my $filename = $q->param('uploaded_file');
  7. my $contenttype= $q->uploadInfo($filename)->{'Content-Type'};
  8. unless ($contenttype eq 'text/html') {
  9.         die "solo acepto documentos HTML!";
  10. }
  11. print header;
  12. print start_html;
  13. print "El tipo es de $contenttype\n";
  14. print end_html;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


:?

He visto algunas respuestas, ya actualicé los paquetes o módulos de Perl.
Avatar de Usuario
HIRONAKAMURA
Perlero nuevo
Perlero nuevo
 
Mensajes: 20
Registrado: 2013-04-23 15:19 @680
Ubicación: México

Re: Can't use an undefined value as a HASH reference at

Notapor explorer » 2015-06-20 14:47 @658

¿A qué error te refieres? Es decir, ¿qué es lo que sale en la ventana del navegador o en los registros de actividad (log) del servidor web?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Can't use an undefined value as a HASH reference at

Notapor HIRONAKAMURA » 2015-06-20 15:03 @668

El error es Can't use an undefined value as a HASH reference at

He actualizado el módulo CGI a la versión 3.63. Pero sigue el problema. Uso Linux.
Avatar de Usuario
HIRONAKAMURA
Perlero nuevo
Perlero nuevo
 
Mensajes: 20
Registrado: 2013-04-23 15:19 @680
Ubicación: México

Re: Can't use an undefined value as a HASH reference at

Notapor explorer » 2015-06-20 15:23 @682

Eso suena a que la línea del uploadinfo() no ha devuelto nada. Puede ser por dos razones: por que estés usando una versión de CGI tan vieja que no soporte ese método, o que realmente uploadinfo() no ha devuelto nada, por la razón de que se ha llamado al cgi sin que se esté subiendo ningún archivo (upload).

Puedes hacer una prueba, para asegurarte que estás usando la versión correcta de CGI:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/opt/lampp/bin/perl
  2. use CGI qw(:standard);
  3. print header;
  4. print start_html;
  5. print "La versión es $CGI::VERSION\n";
  6. print end_html;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Can't use an undefined value as a HASH reference at

Notapor HIRONAKAMURA » 2015-06-20 22:12 @966

Cierto, la versión que tenía instalada en el servidor era la 3.59 y requiero una más actual (3.63 o más).

Ya he actualizado a la versión 4.20 con la siguiente orden:

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. sudo /opt/lampp/bin/cpan CGI
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Reinicié el servidor y sigue el problema.
Avatar de Usuario
HIRONAKAMURA
Perlero nuevo
Perlero nuevo
 
Mensajes: 20
Registrado: 2013-04-23 15:19 @680
Ubicación: México

Re: Can't use an undefined value as a HASH reference at

Notapor explorer » 2015-06-21 06:21 @306

Cuéntanos cómo lo ejecutas. Desde consola o desde el navegador web. Y qué parámetros usas: escritos en la línea de comandos o usando un formulario HTML.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Can't use an undefined value as a HASH reference at

Notapor HIRONAKAMURA » 2015-06-21 09:03 @419

Uso XAMPP, lo ejecuto desde terminal:

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. sudo /opt/lampp/share/xampp-control-panel/xampp-control-panel
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Se abre una ventana con botones para iniciar los servicios (Apache, MySQL, etc.). Todo bien, pero cuando voy al recurso imprime.pl en http://localhost/XAMPP/miCarpeta/imprime.pl me sale ese menaje de error (Can't use an undefined value as a HASH reference at ... ).

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/opt/lampp/bin/perl
  2.  
  3. use strict;
  4. use CGI qw(:standard);
  5.  
  6. my $q=new CGI;
  7. my $filename = $q->param('uploaded_file');
  8. my $contenttype= $q->uploadInfo($filename)->{'Content-Type'};
  9.  
  10. unless ($contenttype eq 'text/html') {
  11.         die "Solo documentos HTML!";
  12. }
  13.  
  14. print header;
  15. print start_html;
  16. print "El tipo es de $contenttype\n";
  17. print end_html;
  18.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Es un ejemplo del libro "Perl: Introducción al desarrollo web" de Steve Suehring.


Olvidé el formulario para enviar el archivo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. <html>
  2. <head>
  3. <title>Programando en Perl Web</title>
  4. </head>
  5. <style type="text/css">
  6.         #mi_form{
  7.         background-color:#edefee;
  8.         }      
  9. </style>
  10.        
  11. <body>
  12.         <h1>Enviado archivos</h1>
  13. <div id="mi_form">
  14. <form method="POST" action="imprime.pl">
  15. Introduce archivo: <input type="file" name="uploaded_file" id="uploaded_file" size="40">
  16. <input type="submit" value="Enviar">
  17.  </form>
  18. </div>
  19. </body>
  20. </html>
  21.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Avatar de Usuario
HIRONAKAMURA
Perlero nuevo
Perlero nuevo
 
Mensajes: 20
Registrado: 2013-04-23 15:19 @680
Ubicación: México

AnteriorSiguiente

Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados