• Publicidad

No sé si esto funciona.

Todo acerca de las bases de datos que existen: SQL, MySQL, Oracle, Postgres, CSV, etc.

No sé si esto funciona.

Notapor Tifa » 2007-12-07 21:17 @928

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

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/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;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Este es el modulito:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
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;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


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

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$variable =~ s/Mundo/Juan/g;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


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.
Tifa
Perlero nuevo
Perlero nuevo
 
Mensajes: 11
Registrado: 2007-10-27 10:41 @487

Publicidad

Notapor explorer » 2007-12-08 06:54 @329

La variable $data1 no está declarada en ningún sitio... ¿no?
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print ARCHIVO $data1->listar;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

¿No será...?
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print ARCHIVO data1->listar();
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


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.
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

Notapor Tifa » 2007-12-08 17:18 @762

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

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
our @todo = qw(coneccion msql data1);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


solo que en vez de $data1->listar, tuve que utilizar $todo[2]->listar... gracias por recalcarme ese punto :oops: 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.
Tifa
Perlero nuevo
Perlero nuevo
 
Mensajes: 11
Registrado: 2007-10-27 10:41 @487


Volver a Bases de datos

¿Quién está conectado?

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