Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

No sé si esto funciona.

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Mensaje Vie Dic 07, 2007 8:17 pm
Tifa
Perlero Nuevo
Perlero Nuevo
Registrado: 27 Oct 2007
Mensajes: 11
No sé si esto funciona. Responder citando

Ante todo quiero pedir disculpas por postear esta tontería, pero no sé si este código funciona o no ya que cada vez que intenta conectarse a Mysql para proseguir con el query se queda buscando y nunca me responde. No sé si funciona, y me gustaría saberlo ya que quiero usar dicho script para guardar en un archivo el listado de nuevas tablas creadas semanalmente por los usuarios.

Este es el código si alguien puede probármelo.

Este es el fuente

Perl:
#!/usr/bin/perl
use strict;
use warnings;
use prueba;
our @todo = qw(coneccion msql data1);

foreach my $efectivo ( @todo ) {
    my $ejecucion = $efectivo->conectar;
    if ( $ejecucion ) {
        $efectivo->peticion;
    }
    else {
        print "Error No se pudo\n";
    }

    open (ARCHIVO,'>>archivo.txt') || warn "$!\n";
    print ARCHIVO $data1->listar;
    close(ARCHIVO);
};

exit 0;


Este es el modulito:

Perl:
package prueba;
require "prueba.pl";
use strict;
use Mysql;

sub data {
    my $coneccionn = Mysql->connect("localhost", "primaria", "marian", "123");
    $coneccionn->selectdb("primaria");
};

sub data1::listar {
    my $coneccionn = Mysql->connect("localhost", "primaria", "marian", "123");
    $coneccionn->selectdb("primaria");
    $coneccion->listtables;
};

sub coneccion::conectar {
    do data();
    if (data()) {
        print STDOUT "Conexión realizada satisfactoriamente\n";
    }
    else {
        print STDOUT "Error no se pudo conectar\n";
    }
};

sub msql::peticion {
    do data();
    if (data()) {
        my @todito = data->listtabbles; print "@todito\n";
    }
    else {
        print "No se pudo\n";
    }
};

1;


Otra pregunta tonta adicional: si tengo un archivo con el siguiente texto "Hola Mundo" y quiero modificar la palabra "Mundo" por "Juan" por ejemplo, sé que se hace con un

Perl:
$variable =~ s/Mundo/Juan/g;


Pero esto solo imprime el cambio en pantalla con print, y yo lo que quiero es que se modifique realmente y se guarden los cambios efectuados en mi archivo. Alguien solo me dijo que se hace con '-i' pero no me dijo cómo... si alguien realmente sabe, agradecería me informara.
Mensaje Sab Dic 08, 2007 5:54 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4143
Ubicación: Valladolid, España
Responder citando

La variable $data1 no está declarada en ningún sitio... ¿no?
Perl:
print ARCHIVO $data1->listar;

¿No será...?
Perl:
print ARCHIVO data1->listar();


En cuanto al resto del código, es bastante lioso... si quieres ver qué es lo que hace, te recomiendo que lo ejecutes paso a paso, con la ayuda del depurador.

En cuanto a la pregunta de la expresión regular, la respuesta es sí, se pueden hacer cambios en los mismos ficheros de los que leemos, con la opción '-i' o la variable global $^I.

Hay unos ejemplos muy claros del funcionamiento de '-i', en perlrun. El uso con la variable global $^I es algo más complicado.
Mensaje Sab Dic 08, 2007 4:18 pm
Tifa
Perlero Nuevo
Perlero Nuevo
Registrado: 27 Oct 2007
Mensajes: 11
Responder citando

Hola Smile perdón me confundí al apuntar a $data1 como variable cuando realmente es una función, aunque sí está ya declarada y importada en:

Perl:
our @todo = qw(coneccion msql data1);


solo que en vez de $data1->listar, tuve que utilizar $todo[2]->listar... gracias por recalcarme ese punto Embarassed El código en sí lo que hace es conectarse a Mysql lo cual funciona... pero cuando quiero hacer un query a las tablas es cuando se queda buscando y no responde. Me parece que es mi Mysql que tiene problemas, he probado listtables en otras Pc con Mysql y funciona, yo quería captar el resultado de listtables y guardarlo en un archivo de texto.
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group