• Publicidad

Cuál es la mejor manera de eliminar estas llaves

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.

Cuál es la mejor manera de eliminar estas llaves

Notapor danimera » 2008-11-03 07:43 @363

Resulta que en mi template tengo unas variables que las obtengo así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$template->query();
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

y en mi consulta a base de datos tengo
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $ary_ref = $self->dbh->selectcol_arrayref("select texto, contenido from contenido", { Columns=>[1,2] });

my %hash = @$ary_ref;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Lo que deseo eliminar todas las llaves de $hash que no se encuentren en $template->query(); Sería bueno lograr algo directamente desde la consulta.

Estoy iniciando con CGI::Application y lo que deseo es relacionar directamente los campos de mi plantilla con mi tabla en base de datos sin hacer tantos pasos... Ahora todas las plantillas no contendrán los mismos datos que tengo en mi tabla, jejeje.
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

Notapor kidd » 2008-11-03 08:16 @386

Hola,

Hay dos posible opciones que se me ocurren:

1. Crear un nuevo hash basado en las variables que tienes en tu template, por ejemplo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
for my $var( @variable_en_template ){
    $hash_template{ $var } = $hash{ $var };
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Esto se me hace muy poco eficiente, así que la segunda opción sería la que más te recomendaria,

2. De una vez hacer la setencia SQL con las variables que quieres, y en vez de hacerlo con selectcol_arrayref() mejor opta por selectcol_hashref(), de esta manera el resultado lo podrás meter en un template sin la necesidad de otro paso.


Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor danimera » 2008-11-03 08:48 @408

Humm... bueno, me sirve... pero lo que pasa es que aveces tengo varias plantillas y algunas veces sí traigo de esa manera los valores... cuando los paso directamente a mi template obtengo un error porque hay unos campos de mi tabla que no corresponden a datos de mi plantilla.

Es que hice algo de esta forma y no me gusta hacer las cosas así en Perl por que me recuerda mucho a PHP

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
       foreach my $empty (keys %hash){
 
               if (!$template->query(name => $empty)){
                       delete $hash{$empty};
               };

         }
 
 
 
         #delete $hash{$_} if map(/$_/i,$template->query(name => $_));
         #return Dumper $template->query;
     
        #return Dumper %hash;

    $template->param(NAME => 'PRUEBA DE NAME');
    $template->param(\%hash);
return $template->output;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Última edición por danimera el 2008-11-03 09:00 @417, editado 1 vez en total
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

Notapor explorer » 2008-11-03 08:50 @409

¿Y usar bind()?
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

Notapor danimera » 2008-11-03 09:08 @422

explorer escribiste:¿Y usar bind()?


Pues no había pensado algo así...

También... sería bueno controlarlo desde la llamada SQL, pero cómo haría algo así...

TONTO, YO ME METÍ A EXPERTO SABIENDO QUE APENAS HACE DOS DÍAS TOCO MySQL con Perl jejejeje :D
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 Avanzado

¿Quién está conectado?

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