• Publicidad

Problemas con concatenación en Perl

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

Problemas con concatenación en Perl

Notapor desiderio » 2007-01-02 16:31 @730

Hola

Espero puedan ayudarme. Tengo problemas para realizar una concatenación y es que apenas estoy aprendiendo a programar en Perl. Lo que estoy haciendo es concatenar un arreglo de números con comas, ejemplo 23,56,34,67. Esto lo hago dentro de un ciclo pero en la última posición me queda una coma, esa coma la tengo que quitar, para eso estaba utilizando la función chop pero al parecer esa función solo me muestra el carácter que se quitó mas no lo elimina y al parecer es porque es un arreglo entonces no sé cómo hacer para quitar ese carácter si es que hay alguna otra función o tengo que pasar el arreglo a cadena.

Aquí esta mi código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!c:perlbinperl.exe  
use DBI;

print "REPORTESn";

#establecer conexion
$cnn=DBI->connect("DBI:mysql:arelia:localhost", '', '');  
       
#preparamos sentencia a ejecutar
my $sth=$cnn->prepare("SELECT n1,n2,n3 from datos where n1=101;");

#ejecutamos sentencia
$sth->execute()
        or die "Cant't execute SQL statementn";

#presentamos resultado
while (@row=$sth->fetchrow_array){
 for ($i=0;$i<$sth->{NUM_OF_FIELDS};$i++){
  @cadena1="'".($row[0]*2).",";
  #@cadena2="'".$row[1]."',";
  #@cadena3="'".$row[2]."',";
 }
 chop(@cadena1);
 #chop(@cadena2);
 #chop(@cadena3);
 print "@cadena1";
 #print "@cadena1";
 #print "@cadena3";
# @graf=(@cadena2,@cadena3);
}

#####foreach $row(@row){ print "*$row*"; }

#@campos=('1','2','3','4','5','6','7','8','9');
#@valores=('U','D','T','C','C','S','S','O','N');
#@graf=(@campos,@valores);
#print "@campos";

#print "$sth->fetchrow_arrayn";
#print "@row";

#@cadena= (hola,gola,bola);
#print "@cadenan";

#desconexion de la bd
$cnn->disconnect
        or warn print "Falló al desconectarn";

#finalizamos
exit;
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Espero puedan ayudarme.

Saludos
desiderio
Perlero nuevo
Perlero nuevo
 
Mensajes: 1
Registrado: 2007-01-02 16:20 @722

Publicidad

Notapor jclp77 » 2007-01-02 17:22 @765

Hola, busca la función Join, creo que te puede ayudar a concatenar lo que necesitas.
jclp77
Perlero nuevo
Perlero nuevo
 
Mensajes: 21
Registrado: 2006-09-06 12:04 @544
Ubicación: México

Notapor Rene Serrano » 2007-01-02 17:37 @776

Bueno lo que veo es que donde estas armando la cadena estas poniedo la coma de mas asi que es sencillo solo restale uno al NUM_OF_FIELDS o puedes hacerlo de esta forma para que no te agregue la ultima coma (,)


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
while (@row=$sth->fetchrow_array){
    for ( $i = 0; $i < length($row[0])-1; $i++ ) {
       @cadena1="'".($row[0]*2).",";
    }
}
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


no lo e probado pero en teori tiene que funcionar :D
Rene Serrano
Perlero nuevo
Perlero nuevo
 
Mensajes: 86
Registrado: 2006-11-27 12:35 @565
Ubicación: El salvador CA

Notapor explorer » 2007-01-02 20:10 @882

Bienvenido a los foros de Perl en Español.

Como dice jclp77, join es lo indicado:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$cadena1 = join(',', @row);
print $cadena1;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Y ten cuidado porque estás usando arrays (@) donde no debes...

Recuerda:
* e$calares almacenan UNA cosa
* @rrays almacenan una LISTA de cosas
* %ash almacenan un DICCIONARIO de cosas
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 Básico

¿Quién está conectado?

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