Página 1 de 1

Duda sobre el funcionamiento de este código

NotaPublicado: 2015-05-13 09:15 @427
por danimera
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use DBI;
  2. # See "Creating database handle" below
  3. $dbh = DBI->connect ("dbi:CSV:", undef, undef, {
  4.     f_ext      => ".csv/r",
  5.     RaiseError => 1,
  6.     }) or die "Cannot connect: $DBI::errstr";
  7.  
  8.  print "Inicio: \n";
  9. # Selecting
  10. my $sth = $dbh->prepare ("select * from fil");
  11. $sth->execute;
  12. $sth->bind_columns (\my ($fname, $lname, $email, $pageid, $studentid,  $a, $b));
  13. my $i =0;
  14. while ($sth->fetch) {
  15.  
  16.     print '$userarray['.$i.'][\'userid\'] = '.$studentid.';'."\n"; # Aqui es mi duda.. cuando $stundeid cambia su valor ?
  17.     print '$userarray['.$i.'][\'cmid\'] = '.$pageid.';'."\n\n";
  18.     $i++;
  19. }
  20.  
  21. $sth->finish;
  22.  
  23. $dbh->disconnect;
  24.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Mi duda es por qué las variables $studenid y $pageid cambian su valor, si no hay asignación aparente alguna donde se les dé el valor, aunque el hecho es que funciona, pero ¿en qué momento del while estas variables cambian? :( ¿Tendrá algo que ver con esto?
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $sth->bind_columns (\my ($fname, $lname, $email, $pageid, $studentid,  $a, $b));
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Re: Duda sobre el funcionamiento de este código

NotaPublicado: 2015-05-13 14:10 @632
por explorer
Pues sí, así es :)

bind_columns(), del módulo DBI, hace que se "asocien" las columnas de la consulta que vamos a recibir, con variables normales. De esa manera, el código queda muy limpio.

Más información en tu perldoc DBI más cercano.