Este es mi primer post, llevo una semana con Perl y ando un poco perdidillo, a ver si podéis ayudarme con este script que estoy haciendo.
En él tengo que recorrer las tablas tpersonas y tproyectos y que me busque los nombres que sean iguales en dichas tablas, y que los id me los guarde en otra llamada tproyper.
El problema que tengo es el siguiente: el bucle me saca siempre la misma persona siendo que hay bastantes más.
Os pongo aquí el script.
Using perl Syntax Highlighting
- #!/usr/bin/perl
- use Pg;
- #Conexión a la base de dato local
- $conn=Pg::connectdb("dbname=dbproy");
- if ($conn->status!=PGRES_CONNECTION_OK){
- print "Conexion erronea al conertar con base de datos.\n";
- print "No se ha podido establecer conexion con base de datos, intentelo de nuevo.";
- exit;
- }
- #Selección de la tabla de datos a modificar
- $result=$conn->exec("select id, nombre_
- from tpersonas order by id");
- $n_personas=$result->ntuples;
- for($a=0;$a<$n_personas;$a++){
- $id_personas[$a]=trunca_final($result->getvalue($a,0));
- $nombre_personas[$a]=trunca_final($result->getvalue($a,1));
- }
- $result1=$conn->exec("select id, investigadorpral
- from tproyectos order by id");
- $n_tproyectos=$result1->ntuples;
- for($a=0;$a<$n_tproyectos;$a++){
- $id_id[$a]=trunca_final($result1->getvalue($a,0));
- $nombre_investigadorpral[$a]=trunca_final($result1->getvalue($a,1));
- }
- #Hay que relacionar las tablas tpersonas y tproyectos en la tabla tproyper
- while(){
- for($a=0;$a<$n_personas;$a++){
- if($nombre_personas[$a] eq $nombre_investigadorpral[$a1]){
- print "Nombre $nombre_personas[$a]\t Nombre $nombre_investigadorpral[$a1]\n";
- print "Id $id_personas[$a] \t Id $id_id[$a1]\n";
- $orden="INSERT INTO tproyper (idproy, idper) VALUES ($id_id[$a1], $id_personas[$a])";
- $result = $conn->exec($orden);
- stop(); #Esto esta mal es solo para salir del bucle infinito
- }#cerrar for
- }#cerrar if
- }#cerrar while
- sub trunca_final ($)
- {
- my ($p) = @_;
- $p =~ /(.+?)(\ *)$/;
- return $1;
- }
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
Un saludo y muchas gracias.