Desarrollando en Perl
Introducción
Cuando nos proponemos escribir un programa en Perl, un programa duradero quiero decir, no un programilla para apagar un fuego, las dudas sobre qué herramientas utilizar nos pueden paralizar un poco al comprender que CPAN sobrepasa los diez mil (10.000) módulos, que muchos de ellos son un estándar de facto en algunas tareas concretas, que otros tenían un futuro prometedor pero que está empezando a decaer, sobrepasados por las circunstancias y las modas, y que otros son prácticamente inutilizables bien por su diseño bien por su instalación.
Creo que es importante que un módulo esté lo bastante bien construído como para que su instalación en un sistema cualquiera no resulte una pesadilla, llena de dolor y lágrimas.
Por eso me decido a recopilar aquí, a modo de referencia, aquellos módulos y
entornos que sirven para resolver tareas concretas en el desarrollo de un
programa Perl
. Y no, no pienso escribir un manual sobre cada uno, a menos
que llegue a utilizarlo muchísimo, tan sólo anotar qué ventajas tiene y qué
desventajas y limitaciones acarrea su empleo.
Aspectos concretos
Desarrollo básico
Las distintas técnicas de programación tienen también herramientas muy útiles para desarrollo rápido:
- Objetos: creando objetos y métodos fácilmente.
- Globales: aquellos elementos que deben ser únicos para toda la aplicación.
Configuración
Una aplicación puede configurarse por varias vías:
- Variables de entorno
- Archivos de configuración
- Parámetros de llamada
Extensiones
Un programa puede necesitar la capacidad de añadir código tras la instalación. Este puede tomar dos formas:
- Plugins que se carguen en tiempo de ejecución y que amplíen su capacidad para hacer cosas.
- Backends también en tiempo de ejecución, aunque no es determinante, y que proporcionen la capacidad de cambiar la forma de comunicarnos con terceros ó de obtener datos de otra fuente, sin alterar la interfaz del programa.
Tipos de datos
- Fechas y horas
- Códigos bancarios
- Códigos fiscales
- Imágenes
Bases de datos
El acceso a los datos suele ser bastante fácil en Perl
:
- Bases de datos relacionales
- Archivos planos
Interfaz de usuario
- Consola tradicional
- Aplicación gráfica
- Web
Impresión
- Informes y formularios planos
- Lenguaje postscript y similar
Comunicaciones
- Conexiones de red
- Procesos demonio
Distribución de software
- Notas sobre paquetes perl
Uniendo piezas
Lo anterior debe verse como un muestrario de opciones a la hora de desarrollar programas, y nada más. Ahora bien, desde mi experiencia particular existe un buen número de aspectos que deberían estar construídos de tal forma que el programador pudiese centrarse en lo que hace el programa realmente, y no en ellos.
Sobre estos aspectos imprescindibles, y aburridos de reimplementar, podríamos hacer la siguiente relación:
- Registro de errores y eventos.
- Gestión de excepciones.
- Carga de configuración
- Manipulación de datos complejos
- Empleo de complementos (plugins) y extensiones (backends).
La siguiente imagen muestra un esbozo de cómo veo la relación entre estos mecanismos:
(disponible también el fuente en
formato Kivio
).
Así pues ¿ por dónde empezamos ?
Pues por el final de la red de dependencias, su eslabón más bajo, aquél que es empleado por todos los demás y que debe estar siempre, siempre presente: el registro de errores.
Luego le añadimos una pieza para controlar las excepciones que aparezcan en el programa, lo que ya condiciona un tanto nuestra manera de diseñarlo y escribirlo, y continuamos con otro mecanismo que centralize la configuración del programa.
Un ejemplo de a dónde quiero llegar podría ser este archivo fuente:
#!/usr/bin/perl
use strict;
use warnings;
use Carp;
use App::EGCD qw(MyApplication);
my $conf = App::EGCD->ReadConfig(
...
);