Creative Commons License
Excepto donde se indique otra cosa, todo el contenido de este lugar está bajo una licencia de Creative Commons.
Taquiones > perl > Desarrollando en Perl

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:

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(
    ...
);

PENDIENTE DE COMPLETAR