Página 3 de 3

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

NotaPublicado: 2015-06-21 11:09 @506
por explorer
Sí, el ejemplo es el de la página 108.

El problema está en que no vemos el código HTML en que se basa ese ejemplo (figura 4.2). Solo dice que está basado en el formulario de la figura 4.1, que a su vez ha sido generado mediante otro código cgi.

Suponiendo que tú no estás usando ese código generado, y que en su lugar estás usando un formulario HTML aparte, que es el que nos muestras en el segundo listado, entonces el error está en el propio código HTML: no estás indicando el método de codificación en que los datos van a subir al servidor, dentro del formulario.

Tienes que cambiar la línea del <form> por esta otra:
Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. <form method="POST" action="imprime.pl" enctype="multipart/form-data">
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Hemos agregado el atributo 'enctype'. Sin él, no sube ningún dato (no hay 'upload'), por lo que uploadinfo() siempre devolvía nulo, y de ahí el error que veías.

En el cgi, hacemos un pequeño cambio para que el programa admita todo tipo de archivos, y así ver el tipo MIME del archivo que pretendemos subir:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/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.  
  9. print header;
  10. print start_html;
  11.  
  12. print "El tipo es de $contenttype\n";
  13.  
  14. print end_html;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Solo hemos quitado un if(), pues queremos que nos responda en todos los tipos de archivos que subamos.

Lo he dejado funcionando en http://joaquinferrero.com/upload.html

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

NotaPublicado: 2015-06-21 11:55 @538
por HIRONAKAMURA
Gracias. Funcionó correctamente al colocar esa parte en el formulario. :D

El libro que menciono me parece muy bueno. Sin embargo, me parece de un nivel más o menos avanzado. Omite muchas cosas como la instalación y configuración del servidor (específica que se usará Apache solamente). Y supone que el lector ya conoce sobre programación web en Perl.