Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Web » Problema con CGI::Application  RESUELTO Responder al tema
Nuevo tema


Página 1 de 1  [ 6 mensajes ] 
 
Nota 2009-11-21 23:06 @004
Avatar de Usuario
Perlero Nuevo
Registrado: 2009-08-26 20:01 @875
Mensajes: 9
Problema con CGI::Application
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:

Syntax: [ Download ] [ Hide ]
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();

y esta es la clase (módulo):
Syntax: [ Download ] [ Hide ]
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;

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:
Citar:
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


Nota 2009-11-21 23:21 @014
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10270
Re: Problema con CGI::Application
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


Nota 2009-11-21 23:57 @040
Avatar de Usuario
Perlero Nuevo
Registrado: 2009-08-26 20:01 @875
Mensajes: 9
Re: Problema con CGI::Application
El error.log de Apache dice:

Syntax: [ Download ] [ Hide ]
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/


Me muestra esto:

Syntax: [ Download ] [ Hide ]
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>


No sé qué significa :S solo que no encuentra el archivo, pero la ruta está correcta.

_________________
La mejor religion es la verdad


Nota 2009-11-22 00:22 @057
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10270
Re: Problema con CGI::Application  RESUELTO
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


Nota 2009-11-22 09:38 @443
Avatar de Usuario
Perlero Nuevo
Registrado: 2009-08-26 20:01 @875
Mensajes: 9
Re: Problema con CGI::Application
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"?

_________________
La mejor religion es la verdad


Última edición por explorer el 2009-11-22 10:30 @479, editado 1 vez en total
Ortografía


Nota 2009-11-22 10:32 @480
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10270
Re: Problema con CGI::Application
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


Responder al tema  [ 6 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO