• Publicidad

Llenar una variable

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Llenar una variable

Notapor teco000 » 2009-03-19 18:17 @804

Saludos, quisiera saber si me pueden ayudar.

Yo hago una consulta a la base de datos, lo cual me devuelve aprox. 15 resultados. Los quiero meter a una variable la cual la tengo que utilizar para otra query. El problema es que no logro llenar la variable con la estructura deseada.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $sth1 = $dbSeg->prepare("select groupid from reportes where repoid='IEF14'");
$sth1->execute( ) or die $DBI::errstr;
while ( @grupos = $sth1->fetchrow_array ) {
    push(@prueba , join(',', map {qq('$_')} @grupos));
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

me devuelve
Código: Seleccionar todo
['101' '102' '104' '105' '106' '107' '108' '109' '110' '111' '112' '113' '114' '115' '116']

¿Por qué no me funciona el join() con la coma?

El resultado que yo deseo es
Código: Seleccionar todo
['101' ,'102' ,'104' ,'105' ,'106' ,'107' ,'108' ,'109' ,'110' ,'111' ,'112' ,'113' ,'114' ,'115' ,'116']
el cual lo meto en otra query.
teco000
Perlero nuevo
Perlero nuevo
 
Mensajes: 67
Registrado: 2008-05-29 15:22 @682
Ubicación: Guatemala

Publicidad

Notapor explorer » 2009-03-19 18:41 @820

Pues a mí sí que me funciona: estás metiendo un único valor en @prueba en cada ciclo. Y ese valor es una cadena de caracteres compuesta de los valores, entrecomillados y separados por comas.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
#
use Modern::Perl;
use Data::Dumper::Names;

my @grupos = qw(
    101 102 104 105 106 107 108 109 110 111 112 113 114 115 116
);

my $var = join q{,}, map { "'$_'" } @grupos;

say Dumper \$var;


my @prueba;
push(@prueba, join q{,}, map { "'$_'" } @grupos);

say Dumper \@prueba;

__END__
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Sale:
Código: Seleccionar todo
$var = \'\'101\',\'102\',\'104\',\'105\',\'106\',\'107\',\'108\',\'109\',\'110\',\'111\',\'112\',\'113\',\'114\',\'115\',\'116\'';

@prueba = (
            '\'101\',\'102\',\'104\',\'105\',\'106\',\'107\',\'108\',\'109\',\'110\',\'111\',\'112\',\'113\',\'114\',\'115\',\'116\''
          );
Última edición por explorer el 2009-03-19 19:15 @843, editado 1 vez en total
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor teco000 » 2009-03-19 19:06 @838

Gracias. Una consulta mas. ¿Ese es Perl 6?
teco000
Perlero nuevo
Perlero nuevo
 
Mensajes: 67
Registrado: 2008-05-29 15:22 @682
Ubicación: Guatemala

Notapor explorer » 2009-03-19 19:13 @842

No. Es Perl 5.10.

Si estás usando una versión anterior, quita el módulo Modern::Perl y cambia los say() por print().
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

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

cron