• Publicidad

Extraño problema con paso de parámetro e if()

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Extraño problema con paso de parámetro e if()

Notapor danimera » 2010-10-18 12:40 @569

Tengo este código
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. package ShoppingCart;
  2. use Data::Dumper;
  3.  
  4. $q = new CGI;
  5. if ($q->param('mode') eq "plugin"){
  6.  
  7.     if ($q->param('action') eq 'editar'){
  8.     &editar;
  9.     }else{
  10.     return "dsdasdsdasda";
  11.     };
  12.  
  13.     if ($q->param('action') && $q->param('action') eq "actualizar"){ &editar; };
  14.     if ($q->param('action') && $q->param('action') eq "nuevo"){ &editar; };
  15.     if ($q->param('action') && $q->param('action') eq "guardar"){ &editar; };
  16.     if (!$q->param('action')){ &admin };
  17.  
  18.     $q->param('action');
  19. }else{
  20.         &run;
  21. }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Llamo la siguiente URL:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
http://127.0.0.1:81/programa-ayllu/admin/index.pl?mode=plugin&action=editar&nm=ShoppingCart&id=4
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Pero siempre me retorna "editar". Y si coloco
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
http://www.programaayllu.com/admin/?mode=plugin&action=editareeee&nm=ShoppingCart&id=4
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


me retorna: dsdasdsdasda

No sé qué puede estar pasando, y la cabeza me da vueltas... ando recansado ^^

Este módulo lo llamo con un require() dentro de un script CGI-App.
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

Publicidad

Re: Extraño problema con paso de parámetro e if()

Notapor explorer » 2010-10-18 14:37 @650

Claro que te retorne "dsdasdsdasda": en la URL pone action=editareeee.

Y de la primera, te devuelve editar porque en la URL veo que 'action' vale 'editar'.
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: Extraño problema con paso de parámetro e if()

Notapor danimera » 2010-10-18 14:40 @653

Es que me faltó la función editar
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub editar{
  return "555";
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¿Acaso no debería retornarme 555 cuando la 'action' sea 'editar'?

ya lo pude solucionar asi.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     if ($q->param('action') eq 'editar'){
  2.  
  3.     return &editar; # solo era llamar la funcion con return
  4.     }else{
  5.     return "dsdasdsdasda";
  6.     };
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
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: Extraño problema con paso de parámetro e if()

Notapor explorer » 2010-10-18 15:30 @687

A ver... que Perl hace muchas cosas, pero no todas...

Si tu pones
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
    if ($q->param('action') eq 'editar'){
        &editar;
    }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

efectivamente, estás llamando a la función editar(). Si la función editar() es
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub editar{
    return "555";
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

entonces sabemos que la función regresa el valor "555". Perfecto... pero... ¿dónde va ese valor...?

Si te fijas, en la segunda fila, dentro del if(), estás llamando a la función editar(), pero NO estás recogiendo el valor que devuelve. El "555" desaparece. Y Perl continúa con la siguiente línea.

Cambia la línea &editar; por return editar(); .
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: Extraño problema con paso de parámetro e if()

Notapor danimera » 2010-10-18 15:55 @705

Sí, ¿cómo puedes ver eso? ... ^^ son cositas que increíblemente me pasan por descuido :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


Volver a Intermedio

¿Quién está conectado?

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