Para realizar el ejemplo es necesario el empleo de 2 ficheros.
1- Ejemplo.pl
2- MotorSGBD.pm
Veamos el código en el siguiente POST.
Fichero Ejemplo.pl
#!/usr/bin/perl # EXPLICACION: # Intentare crear un motor sencillo de acceso a una base de datos del gestor MYSQL mediante # consultas SELECT, INSERT y DELETE. # Para ello empleare modulos CPAN para el acceso a la base de datos. # De esta manera demuestro el acceso distribuido a una base de datos MYSQL # IMPORTANTISIMO: # Necesario descargarse # Modulo DBD::mSQL / DBD::mysql - mSQL and mysql drivers for the Perl5 Database # http://www.cpan.org/modules/01modules.index.html el , Msql-Mysql-modules-1.2219.tar.gz # He probado con dbi:ODBC:Host, pero es necesario crear un DSN local en el sistema # para conectar por ODBC. Por lo que el objeto no tiene sentido. # Me temo que con activeperl para windows, ejecutando el ppm # no encuentra el modulo para mysql # Estructura de tabla: usuario: id (int), nombre (varchar), apellido1(varchar), edad (int) # Creada para propositos del ejemplo, sobre un servidor mio, # cambiar datos del servidor por uno vuestro. use MotorSGBD; system("cls"); #Datos de la conexión $host="la IP"; $puerto="3306"; $db="ejemplo"; $usuario="demo"; $password="oscar"; $base= MotorSGBD->new(); $base->Inicializar ($host,$puerto,$db,$usuario,$password); $base->Conectar; #No se realmente tu edad. Sugongamos 30 $base->Insertar_Datos("2","Oscar","de la Cuesta", "30"); #Consulta datos almacenados inicialmente en la base, id 1 $base->Consultar_Datos("1"); #Borra los datos del ID 2 insertado arriba. $base->Borrar_Datos("2"); $base->Cerrar; |
Ahora el contenido del segundo fichero. MotorSGBD.pm
package MotorSGBD; #Uso de librerias de CPAN, necesitan estar instaladas comprobado con pmp use DBI; # Necesario descargarse # Modulo DBD::mSQL / DBD::mysql - mSQL and mysql drivers for the Perl5 Database #http://www.cpan.org/modules/01modules.index.html el Msql-Mysql-modules-1.2219.tar.gz #Programamos el constructor de la clase sub new{ my $this=shift; #Cogemos la clase que somos o una referencia a la clase (si soy un objeto) my $class = ref($this) || $this; #Averiguo la clase a la que pertenezco my $self={}; #Inicializamos la tabla hash que contendrá las var. de instancia $self ->{HOST}=""; $self ->{PUERTO}=""; $self ->{BASE} = ""; $self ->{USUARIO} = ""; $self ->{PASSWORD}=""; bless $self, $class; #Perl nos tiene que dar el visto bueno (bendecirla) return ($self); #Devolvemos la clase recién construida } #Inicializa los campos del objeto con los valores pasados. sub Inicializar { $self ->{HOST}=$_[1]; $self ->{PUERTO}=$_[2]; $self ->{BASE}=$_[3]; $self ->{USUARIO}=$_[4]; $self ->{PASSWORD}=$_[5]; } sub Conectar { # Realizamos la conexión a la base de datos system("cls"); print "Intentando conectar don DBI->MYSQL ..., si no contecta, condigurar un ODBC \n"; $dbh = DBI->connect('dbi:mysql:'.$self ->{HOST},$self ->{USUARIO},$self->{PASSWORD}) or die "Error de conexion: $DBI::errstr\n"; #He probado con dbi:ODBC:Host, pero es necesario crear un DSN local en el sistema para conectar por ODBC. #Por lo que el objeto no tiene sentido. } sub Consultar_Datos { $id =$_[1]; $consulta = "SELECT * FROM usuarios where id= ". $id; $sth = $dbh->prepare($consulta); print $consulta; $sth->execute(); # Recorremos los resultados obtenidos de la base de datos while($sth->fetch()) { print "$nombre - $apellido1"; } } sub Insertar_Datos { $id =$_[1]; $nombre =$_[2]; $apellido1 =$_[3]; $edad =$_[4]; $consulta = "insert into usuarios values = ( ". $id. ",'" .$nombre."','".$apellido1."',". $edad. ");"; $sth = $dbh->prepare($consulta); $sth->execute(); } sub Borrar_Datos { $id =$_[1]; $consulta = "delete from usuarios where id = ". $id; $sth = $dbh->prepare($consulta); $sth->execute(); } sub Cerrar { $dbh->disconnect; } sub DESTROY { my $self=shift; #El primer parámetro de un metodo es la clase delete ($self->{BASE}); delete ($self ->{PUERTO}); delete ($self->{USUARIO}); delete ($self->{PASSWORD}); delete ($self->{HOST}); } #Fin 1; |
Sobre Perl
Perl tiene muchas y variadas aplicaciones, gracias a la disponibilidad de muchos módulos estándares y de terceras partes.
Se ha usado desde los primeros días del Web para escribir guiones (scripts) CGI. Es una de las “tres Pes” (Perl, Python y PHP), que son los lenguajes más populares para la creación de aplicaciones Web, y es un componente integral de la popular solución LAMP para el desarrollo web.
Grandes proyectos escritos en Perl son Slash, IMDb6 y UseModWiki, un motor de Wiki.
Muchos sitios web con alto tráfico, como Amazon.com y Ticketmaster.com usan Perl extensamente.
Perl se usa a menudo como un “lenguaje pegamento”, ligando sistemas e interfaces que no fueron diseñados específicamente para interoperar; y para el “escarbado de datos”, convirtiendo o procesando grandes cantidades de datos para tareas como por ejemplo crear informes.
De hecho, estas fortalezas están íntimamente unidas. Su combinación hace a Perl una popular herramienta de propósito general para los administradores de sistemas, especialmente en programas pequeños que pueden ser escritos y ejecutados en una sola línea de comandos.
Perl es también ampliamente usado en finanzas y bioinformática, donde es apreciado por su desarrollo rápido, tanto de aplicaciones como de despliegue, así como la habilidad de manejar grandes volúmenes de datos.