Como practica para probar y conocer como generar códigos QR en Perl, realizaremos el siguiente ejercicio: conectarnos a una base de datos, consultar el identificador único de cada producto en una tabla de nuestra base de datos postgres, generar el código QR de cada uno de los productos. Cada QR direccionara a un url compuesto por una pagina web + el identificador, con lo cual suponemos que en ese url hubiera la información con mas detalle del producto. La practica sera realizada en Debian GNU/Linux
Usaremos el modulo de CPAN Imager::QRCode para generar nuestros QR. Mas información: http://search.cpan.org/~kurihara/Imager-QRCode/lib/Imager/QRCode.pm
Para conectarnos y consultar la base de datos, usaremos la extensión para postgres de Class::DBI. Mas información: http://search.cpan.org/~rudy/DBD-Pg/Pg.pm
Código QR desde postgreSQL con Perl
Ambos módulos los tendremos disponibles en nuestro Debian con: #aptitude install libimager-qrcode-perl libclass-dbi-pg-perl
Crearemos un archivo de texto con extensión .pl colocaremos y adaptaremos lo siguiente:
Código Fuente
[sourcecode language=»perl»]
#!/usr/bin/perl -w
use Imager::QRCode;
use DBI;
my $bd = DBI->connect("DBI:Pg:dbname=bd_ventas;host=192.168.0.1", "usuario_bd", "clave_bd", {‘RaiseError’ => 1});
my (@consulta, $sth);
$sth=$bd->prepare("SELECT id_producto FROM productos");
$sth->execute();
my $qrcode = Imager::QRCode->new(
size => 8,
margin => 1,
version => 4,
level => ‘L’,
casesensitive => 1,
lightcolor => Imager::Color->new(255, 255, 255),
darkcolor => Imager::Color->new(0, 0, 0),
);
while(@consulta = $sth->fetchrow_array() ){
$img = $qrcode->plot("http://paginaweb.com.ve/$consulta[0]", \%params);
$img->write(file => "$consulta[0].gif");
}#fin while
[/sourcecode]
Explicación del código fuente
Nota: La numeración presentada a continuación corresponde a las lineas de código presentadas anteriormente.
2 y 3: Le indicamos al programa que usaremos los módulos que contienen funcionalidades que necesitaremos en este script. Como las de interactuar con PostgreSQL y generar códigos QR.
5 y 6: Indicamos la cadena de conexión a PostgreSQL y inicializamos variables que usaremos.
8 y 9: Preparamos la consulta que necesitamos y la ejecutamos.
11: Creamos una instancia del objeto que generara nuestros código QR, los parámetros que aceptan serán las propiedades de nuestros QR.
12: Define el tamaño de la imagen del QR, un valor de 8 la genera de 280x280px y 4 como valor la generara de 140x140px).
13: Definirá el ancho del margen entre los bordes de la imagen y el código QR.
14: Define la versión del QR a generar. Se refiere a la capacidad de la información a almacenar. Mas información: http://www.qrcode.com/en/about/version.html
15: Definirá nivel de recuperar la información del QR si este se ensucia o daña. Los valores posibles son L M Q H .Mas información: http://www.qrcode.com/en/about/error_correction.html
16: Usar si los valores que usaras deben ser diferenciados entre mayúsculas y minúsculas
17 y 18: Indica el color claro y oscuro del QR, con lo cual si queremos nuestro QR amarillo y negro podemos usar (234,234,34) con (0,0,0).
21: Recorremos el resultado de la consulta, en cada iteración crearemos un QR con los datos que tenemos disponible en cada vuelta
22 y 23: Indicamos el texto o el URL que retornara el QR al ser leído(en nuestro caso el url) y generamos la imagen del QR (usamos el identificador que consultamos como nombre de archivo con extensión .gif)