• Publicidad

Problema con CGI::Application

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Problema con CGI::Application

Notapor Sismetic » 2009-11-21 23:06 @004

Hola, gracias por ver mi "thread". Tengo un problema con CGI::Application y quiero ver qué estoy haciendo mal.

Este es el script con el que cargo la clase y hago el objeto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!C:/Perl/bin/perl.exe
  2.  
  3. use warnings;
  4. use strict;
  5. use lib('./lib');
  6. use Personalized;
  7. use Data::Dumper;
  8.  
  9. my $prog = Personalized->new();
  10.    $prog->run();
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

y esta es la clase (módulo):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. package Personalized;
  2.  
  3. use warnings;
  4. use strict;
  5. use CGI;
  6. use base qw( CGI::Application );
  7.  
  8. sub setup{
  9.  
  10.     my $self = shift;
  11.     $self->run_modes(
  12.     'Mode_1' => 'Home_Page',
  13.     'Mode_2' => 'Do_Request'
  14.     );
  15.     $self->mode_param('action');
  16.     $self->start_mode('Mode_1');
  17.  
  18. }
  19.  
  20.  
  21. sub Home_Page{
  22.  
  23.     my $self = shift;
  24.     my $tmpl = $self->load_tmpl('./Templates/Home Page/home_page.htm');
  25.     return $tmpl->output;
  26.  
  27. }
  28.  
  29. sub Do_Request{
  30.  
  31.     my $self = shift;
  32.     my $q = $self->query();
  33.     my %Vars = $q->Vars;
  34.  
  35.     my $radio = $Vars{'find'};
  36.     my $text_find = $Vars{'text_find'};
  37.     my $tmpl = $self->load_tmpl('./Templates/Home Page/Home_Page.htm');
  38.     my $URL;
  39.     $text_find =~ s/ /+/g;
  40.  
  41.     if (!$radio){
  42.         $tmpl->param('error' => 1);
  43.         return $tmpl->output;
  44.     }
  45.     if (!$text_find){
  46.         $tmpl->param('search_err' => 1);
  47.         return $tmpl->output;
  48.     }
  49.     if ($radio eq 'Google'){
  50.         $URL = "http://www.google.com.mx/search?hl=es&source=hp&q=$text_find&meta=&aq=f&oq=";
  51.     }
  52.     elsif($radio eq 'Psk'){
  53.         $URL = "http://www.pskonejott.com/otc_display.php?character=$text_find";
  54.     }
  55.     elsif($radio eq 'W3'){
  56.         $URL = "http://www.google.com/search?sitesearch=www.w3schools.com&as_q=$text_find";
  57.     }
  58.  
  59.     $self->header_add(-location => $URL);
  60.  
  61. }
  62.  
  63. 1;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

He estado queriendo ver qué esta mal, porque antes me decía error fatal en el intérprete, pero le cambie algo, no me acuerdo y funcionó bien, pero ahora me dice:
CGI::Application::run('Personalized=HASH(0x239e4c))' called at run_home_page.cgi line 10
at run_home_page.cgi line 1
La mejor religion es la verdad
Avatar de Usuario
Sismetic
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2009-08-26 20:01 @875

Publicidad

Re: Problema con CGI::Application

Notapor explorer » 2009-11-21 23:21 @014

El mensaje de error solo indica que el error se ha producido dentro del módulo, pero nada más.

Inserta la línea

use CGI::Carp qw(fatalsToBrowser);

en el módulo, después de la de use CGI;, a ver si da más información.

No dejes de repasar el fichero de errores 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: Problema con CGI::Application

Notapor Sismetic » 2009-11-21 23:57 @040

El error.log de Apache dice:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
[Sat Nov 21 22:56:45 2009] [error] [client XXX.X.X.X]  at G:/Naty/Apache/htdocs/run_home_page.cgi line 10, referer: http://localhost/
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Me muestra esto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
<h1>Software error:</h1>
<pre>Error executing run mode 'Mode_1': HTML::Template-&gt;new() : Cannot open included file ./Templates/Home Page/home_page.htm : file not found. at C:/Perl/lib/HTML/Template.pm line 1658
        HTML::Template::_init_template('HTML::Template=HASH(0x290ba0c)') called at C:/Perl/lib/HTML/Template.pm line 1238
        HTML::Template::_init('HTML::Template=HASH(0x290ba0c)') called at C:/Perl/lib/HTML/Template.pm line 1124
        HTML::Template::new('HTML::Template', 'filename', './Templates/Home Page/home_page.htm') called at C:/Perl/site/lib/CGI/Application.pm line 1720
        CGI::Application::load_tmpl('Personalized=HASH(0x239e4c)', './Templates/Home Page/home_page.htm') called at lib/Personalized.pm line 25
        Personalized::Home_Page('Personalized=HASH(0x239e4c)') called at C:/Perl/site/lib/CGI/Application.pm line 143
        eval {...} called at C:/Perl/site/lib/CGI/Application.pm line 142
        CGI::Application::__get_body('Personalized=HASH(0x239e4c)', 'Mode_1') called at C:/Perl/site/lib/CGI/Application.pm line 191
        CGI::Application::run('Personalized=HASH(0x239e4c)') called at C:\DOCUME~1\Trabajo\LOCALS~1\Temp\dzprltmp.pl line 10
 at C:\DOCUME~1\Trabajo\LOCALS~1\Temp\dzprltmp.pl line 10
</pre>
<p>
For help, please send mail to this site's webmaster, giving this error message
and the time and date of the error.
</p>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


No sé qué significa :S solo que no encuentra el archivo, pero la ruta está correcta.
La mejor religion es la verdad
Avatar de Usuario
Sismetic
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2009-08-26 20:01 @875

Re: Problema con CGI::Application

Notapor explorer » 2009-11-22 00:22 @057

El error es claro: no encuentra el fichero de la plantilla.

El problema es que le estás indicando la posición a la plantilla de forma relativa, pero no estamos seguros de que estemos en la posición correcta (el programa está ejecutándose en el sitio que por defecto hemos dejado).

Debes averiguar dónde se está ejecutando tu código. Y con respecto a esa posición, dar el de la plantilla. O dar una posición absoluta.

Más detalles sobre los directorios de trabajo.

Según veo, el programa está en "C:\DOCUME~1\Trabajo\LOCALS~1\Temp\dzprltmp.pl", por lo que a partir de ese sitio debe localizar "./Templates/Home Page/home_page.htm".
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: Problema con CGI::Application

Notapor Sismetic » 2009-11-22 09:38 @443

Sí, el problema es que estaba poniendo la dirección relativa al módulo, no al script que lo estaba cargando. Gracias, y otra preguntita, ¿cómo pongo "RESUELTO"?
Última edición por explorer el 2009-11-22 10:30 @479, editado 1 vez en total
Razón: Ortografía
La mejor religion es la verdad
Avatar de Usuario
Sismetic
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2009-08-26 20:01 @875

Re: Problema con CGI::Application

Notapor explorer » 2009-11-22 10:32 @480

Pulsa el botón "Aceptar respuesta" en el mensaje que crees que ha respondido a la cuestión planteada en el hilo. El botón está a la derecha, arriba, de cada mensaje.
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


Volver a Web

¿Quién está conectado?

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