Perl
|
Perl (Practical Extraction and Report Language) es un lenguaje de programación desarrollado a finales de los años 80 por Larry Wall a partir otras herramientas de UNIX como son: ed,grep,awk,c-shell, para la administración de tareas propias de sistemas UNIX.
Es un lenguaje de script de tipo BCPL (como TCL o PHP), muy semejante al AWK (de hecho está basado en él), de tipo estructurado con trazas de orientación a objetos (no completamente soportado de forma directa), que permite el desarrollo rápido de aplicaciones y herramientas especialmente orientadas al tratamiento de textos y archivos, aunque actualmente también se utiliza incluso para entornos graficos, en combinación con sistemas como Perl/TK o GTK.
Historia
Larry Wall comenzó a trabajar en Perl en 1987 mientras trabajaba como programador en Unisys y anunció la versión 1.0 en el grupo de noticias comp.sources.misc el 18 de diciembre de 1987. El lenguaje se expandió rápidamente en los siguientes años. Perl 2, publicado en 1988, aportó un mejor motor de expresiones regulares. Perl 3, publicado en 1989, añadió soporte para datos binarios.
Hasta 1991 la única documentación de Perl era una simple (y cada vez más larga) página de manual Unix. En 1991 se publicó Programming Perl (el libro del camello) y se convirtió en la referencia de facto del lenguaje. Al mismo tiempo, el número de versión de Perl saltó a 4, no por marcar un gran cambio en el lenguaje, sino por identificar a la versión que estaba documentada en el libro. Perl 4 trajo consigo una serie de lanzamientos de mantenimiento, culminando en Perl 4.036 en 1993. En este punto, Larry Wall abandonó Perl 4 para comenzar a trabajar en Perl 5. Perl 4 se quedaría en esa versión hasta hoy.
Perl 5 fue publicado el 17 de octubre de 1994. Fue casi una completa reescritura del intérprete y añadió muchas nuevas características al lenguaje, incluyendo objetos, referencias, paquetes y módulos. A destacar, los módulos proveen de un mecanismo para extender el lenguaje sin modificar el intérprete. Esto permitió estabilizar su núcleo principal, además de permitir a los programadores de Perl añadirle nuevas características.
El 26 de octubre de 1995, se creó el Comprehensive Perl Archive Network (CPAN). CPAN es una colección de sitios web que almacenan y distribuyen fuentes en Perl, binarios, documentación, scripts y módulos. Originalmente, cada sitio CPAN debía ser accedido a través de su propio URL; hoy en día, redirecciona automáticamente a uno de los cientos de repositorios espejo de CPAN.
En junio de 2006, win32.perl.org fue lanzado por Adam Kennedy en nombre de la Fundación Perl. Es una comunidad web "para todo lo relacionado con Windows y Perl".
En 2008, Perl 5 continua siendo mantenido. Características importantes y algunas construcciones esenciales han sido añadidas, incluyendo soporte Unicode, Hilos (threads), un soporte importante para la programación orientada a objetos y otras mejoras.
Características
Perl toma características del lenguaje C, del lenguaje interpretado bourne shell (sh), AWK, sed, Lisp y, en un grado inferior, de muchos otros lenguajes de programación.
Estructuralmente, Perl está basado en un estilo de bloques como los del C o AWK, y fue ampliamente adoptado por su destreza en el procesado de texto y no tener ninguna de las limitaciones de los otros lenguajes de script.
- No establece ninguna filosofía de programación concreta. No se puede decir que sea orientado a objetos, modular o estructurado aunque soporta directamente todos estos paradigmas y su punto fuerte son las labores de procesamiento de textos y archivos.
- No es ni un compilador ni un intérprete, esta en un punto intermedio, cuando mandamos a ejecutar un programa en Perl, se compila el código fuente a un código intermedio en memoria que se optimiza como si se fuera a elaborar un programa ejecutable pero es ejecutado por un motor, como si se tratase de un interprete.
- Lenguaje de programación basado en scripts a casi cualquier plataforma. Es muy utilizado para escribir CGIs.
- Lenguaje optimizado para el escaneo de texto arbitrario de ficheros. Es también un buen lenguaje para tareas de administración de sistemas. Es un lenguaje con intención de ser práctico en lugar de bonito. Satisface las tres virtudes del programador: flojera, impaciencia y petulancia.
- Básicamente, es un lenguaje que se ha intentado que sea lo más natural posible, lo que conlleva que en ocasiones nos encontremos estructuras poco habituales en un lenguaje de este tipo:
print "hola EcuRed" if $saludo == 1;
Destaca también el uso de variables especiales, muy habituales en los lenguajes de tipo script en los sistemas de tipo Unix. Estas variables permiten realizar una serie de operaciones sobre los datos y los archivos que aportan a PERL una flexibilidad y potencia enormes.
Además de variables que podemos encontrar en otros lenguajes como @ARGV (indica los parámetros con los que se ha llamado al programa) o %ENV (indica las variables de entorno de la aplicación), podemos utilizar también variables como $_ (que representa el último dato que llegó por la entrada estandar), o $/, que nos indica si PERL debe enviar el texto a la salida estandar inmediatamente (o al flujo de salida que le hayamos indicado previamente).
PERL tiene implementadas las expresiones regulares, (regular expressions), lo que le da una potencia muy grande en el procesamiento de textos.
Todas las variables son marcadas con un sigilo precedente (sigil). Los sigilos identifican inequívocamente los nombres de las variables, permitiendo a Perl tener una rica sintaxis. Notablemente, los sigilos permiten interpolar variables directamente dentro de las cadenas de caracteres (strings). Como en los shell, Perl tiene muchas funciones integradas para tareas comunes y para acceder a los recursos del sistema.
La sintaxis de Perl refleja la idea de que "cosas que son diferentes deben parecer diferentes". Por ejemplo, escalares, arrays y hashes tienen diferente sigilo. Índices de array y claves hash usan diferentes clases de paréntesis. Strings y expresiones regulares tienen diferentes delimitadores estándar. Esta aproximación puede contrastarse con lenguajes como Lisp, donde la misma construcción S-expresión y sintaxis básica se usa para muchos y variados propósitos.
Perl tiene características que soportan una variedad de paradigmas de programación, como la imperativa, funcional y la orientada a objetos. Al mismo tiempo, Perl no obliga a seguir ningún paradigma en particular, ni obliga al programador a elegir alguna de ellas.
GNU/Linux
Perl está instalado por defecto en las distribuciones más populares de GNU/Linux incluyendo Gentoo, Slackware, Mandriva, Debian, RedHat y SUSE.
Windows
Los usuarios de Microsoft Windows normalmente instalan una distribución binaria de Perl. Compilar Perl desde el código fuente bajo Windows es posible, pero la mayoría de las instalaciones no disponen del necesario compilador de C.
La capa de emulación Cygwin proporciona otra forma de correr Perl bajo Windows. Cygwin proporciona en entorno parecido al Unix en Windows que incluye gcc, por lo que compilar Perl desde el código es una opción accesible para los usuarios que prefieren esta opción.
Estructura del lenguaje
Programa ejemplo Perl, el programa canónico "Hola EcuRed" es:
#!/usr/bin/perl print "¡Hola EcuRed!\n";
La primera línea contiene el shebang (par de caracteres que identifica el texto que sigue), que le indica al sistema operativo dónde encontrar el intérprete de Perl. La segunda imprime el string¡Hola EcuRed! y un carácter de nueva línea.
El shebang es la forma normal para invocar al intérprete en los sistemas Unix. Los sistemas Windows pueden seguir utilizándolo o pueden asociar la extensión de archivo .pl con el intérprete Perl. Algunos editores de texto también usan la línea shebang como una pista sobre el modo de trabajo en que deben operar. Si el programa es ejecutado por perl y no invocado por el shell, la línea que empieza por el shebang es parseada para interpretar las opciones. En otro caso, es ignorada. Para ver los detalles de esto, consultar la página de manual perlrun.