[Perl] ayuda con DBI y fetchrow
Gunnar Wolf
gwolf en gwolf.org
Mie Oct 25 19:22:12 CDT 2006
Joel Muñoz dijo [Wed, Oct 25, 2006 at 09:58:48PM +0000]:
> Hola a tod en s
> Tengo Perl y MySql y estoy usando DBI para bajar todos los campos de unas
> tablas, (todos los campos son alfanumericos) y necesito que todos los
> campos esten con comillas dobles.
>
> Lo que quiero hacer es eficientar mi codigo porque se como se puede lograr
> con la instruccion bind_column pero son 15 tablas y cada tabla tiene
> alrededor de 35 campos, asi que echen cuentas ... Si alguien sabe como
> hacerlo con fetch_row, se lo agradeceria mucho
> He intentado hacer un replace de las comas por "," pero falla en el ultimo
> campo, por obvias razones.
>
> este es mi codigo
>
>
> my $dbh = DBI->connect ("DBI:mysql:database=$db:host=$host",
> $user,
> $password)
> or die "Can't connect to database:
> $DBI::errstr\n";
>
> my $sth = $dbh->prepare( " SELECT * FROM ciudades");
> $sth->execute( );
> print "\tQuery results:\n====================================\n";
> #este es el problema :-S, aqui pone todos los campos divididos por coma,
> pero necesito que a cada
> #campo se le ponga comilla doble
> while ( my @row = $sth->fetchrow_array( ) ) {
> print "@row\n";
> }
O no entendí tu planteamiento, o es trivial:
while (my @row = $sth->fetchrow_array ) {
print join(', ', map {qq("$_")} @row),"\n";
}
¿Qué significa eso? Bueno, join es simple - Toma los elementos de un
arreglo, y los une con la cadena que le indiques. Respecto a map,
recibe un bloque (básicamente una función sin nombre), y le pasa en la
variable default ($_) cada uno de los elementos de tu arreglo. Map te
devuelve el aplicar esta función a cada uno de los elementos.
Por último, ¿qué es qq()? Es una función análoga a las comillas
dobles, para simplificarme la existencia, dado que requieres que la
salida lleve comillas dobles ;-)
Saludos,
--
Gunnar Wolf - gwolf en gwolf.org - (+52-55)5623-0154 / 1451-2244
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973 F800 D80E F35A 8BB5 27AF
Más información sobre la lista de distribución Perl