Contenido Checked

Perl

Temas relacionados: Programas de computadoras

Sabías ...

SOS cree que la educación da una mejor oportunidad en la vida para los niños en el mundo en desarrollo también. Una rápida conexión para el apadrinamiento de niños es http://www.sponsor-a-child.org.uk/

Perl
Programming-republic-of-perl.png
Paradigma (s) Multi-paradigma
Apareció en 1987
Diseñado por Larry Wall
Última versión estable 5.10.0 (18 de diciembre de 2007 (2007-12-18))
Disciplina Typing Dinámica
Influenciado por AWK, BASIC , BASIC-PLUS, C , C ++ , Lisp, Pascal, sed, Shell de Unix
Influenciado Python , PHP, Ruby, ECMAScript, Dao, Windows PowerShell
OS Multiplataforma
Licencia Licencia Pública General de GNU, Licencia Artística
  • http://www.perl.org/

En la programación de computadoras, Perl es un alto nivel, propósito general, interpretado, lenguaje de programación dinámica. Perl fue desarrollado originalmente por Larry Wall, un lingüista que trabaja como administrador de sistemas de la NASA , en 1987, como un propósito general Unix lenguaje de scripting para hacer el procesamiento de informes easier.Since entonces, ha sufrido muchos cambios y revisiones y se hizo muy popular entre los programadores. Larry Wall continúa supervisando el desarrollo de la lengua de la base, y su más reciente versión, Perl 6.

Perl toma prestadas características de otros lenguajes de programación, incluyendo C , shell scripting ( sh), AWK, sed y Lisp. El lenguaje proporciona potentes instalaciones de procesamiento de texto sin límites de longitud de datos arbitrarios, como las muchas herramientas de Unix presentes en el momento, por lo que es el lenguaje ideal para la manipulación archivos de texto. También se utiliza para la programación de gráficos, la administración del sistema, programación de la red, aplicaciones que requieren acceso de base de datos y Programación CGI en la Web . Perl es apodado como el Swiss motosierra Ejército de los lenguajes de programación debido a su flexibilidad y adaptabilidad.

Historia

Larry Wall comenzó a trabajar en Perl en 1987, mientras trabajaba como programador en Unisys y lanzado la versión 1.0 a la comp.sources.misc grupo de noticias, el 18 de diciembre de 1987. El lenguaje se expandió rápidamente en los próximos años. Perl 2, lanzado en 1988, contó con una mejor motor de expresiones regulares. Perl 3, lanzado en 1989, ha añadido soporte para datos binarios arroyos.

Originalmente la única documentación de Perl era una sola (cada vez más larga) página de manual. En 1991, Perl programación (conocido por muchos programadores de Perl como el "Camel Book") fue publicado, y se convirtió en la referencia de facto para el idioma. Al mismo tiempo, el número de versión de Perl fue golpeado a 4, no para marcar un cambio importante en el lenguaje, sino identificar la versión que fue documentado por el libro.

Perl 4 pasó por una serie de versiones de mantenimiento, culminando en Perl 4.036 en 1993. En ese momento, Wall abandonó Perl 4 para comenzar a trabajar en Perl 5.

El diseño inicial de Perl 5 continuó en 1994. Los Perl5-porteros lista de correos se estableció en mayo de 1994 para coordinar el trabajo en portar Perl 5 para diferentes plataformas. Sigue siendo el principal foro para el desarrollo, mantenimiento y portabilidad de Perl 5.

Perl 5 fue lanzado el 17 de octubre de 1994. Fue una reescritura casi completa de la intérprete y añadió muchas nuevas características al lenguaje, incluyendo objetos, referencias, (mis) las variables léxicas y módulos. Es importante destacar que los módulos proporcionan un mecanismo para extender el lenguaje sin modificar el intérprete. Esto permitió que el intérprete núcleo para estabilizar, incluso, ya que permitió a los programadores de Perl ordinarios para añadir nuevas características del lenguaje.

A partir de 2008, Perl 5 todavía está siendo mantenido activamente. Características importantes y algunas nuevas construcciones del lenguaje esenciales se han añadido a lo largo del camino, incluyendo Soporte Unicode, hilos, soporte mejorado para programación orientada a objetos y muchas otras mejoras.

El 18 de diciembre de 2007, el 20 aniversario de Perl 1.0, Perl 5.10.0 fue puesto en libertad. Perl 5.10.0 incluye nuevas características notables, que lo acercan a Perl 6, entre ellos una nueva sentencia switch actualizaciones expresiones regulares, el "operador partido inteligente" ~~, y más (llamado "da / cuando"),.

Uno de los eventos más importantes de Perl 5 historia tuvieron lugar fuera de la lengua propia, y era una consecuencia de su apoyo módulo. En 26 de octubre de 1995 , el Integral Perl Archive Network (CPAN) se estableció como una repositorio para Perl módulos y sí Perl. En el momento de la escritura, que lleva más de 13.500 módulos de más de 6.500 autores. CPAN es ampliamente considerado como una de las mayores fortalezas de Perl en la práctica.

Nombre

Perl fue originalmente llamado "Perla", después de la Parábola de la Perla de la Evangelio de Mateo. Larry Wall quería darle a la lengua un nombre corto con connotaciones positivas; afirma que él consideraba (y rechazó) todas las palabras de tres y cuatro letras en el diccionario. También consideró nombrarlo después de su esposa Gloria. Muro descubrió el vigente Lenguaje de programación PEARL antes del lanzamiento oficial de Perl y cambió la ortografía del nombre.

El nombre normalmente se escribe con mayúscula (Perl) cuando se refiere a la lengua y en minúsculas (perl) cuando se refiere al programa de intérprete en sí mismo ya que los sistemas de archivos Unix distinguen entre mayúsculas y minúsculas. Antes del lanzamiento de la primera edición de programación Perl, era común para referirse a la lengua como perl; Randal L. Schwartz, sin embargo, en mayúsculas el nombre del idioma en el libro para hacer que se destaque mejor cuando tipografía. El caso distinción fue adoptada posteriormente por la comunidad.

El nombre de vez en cuando se da como "PERL" (por Práctico de Extracción e Informe Language). Aunque la expansión ha prevalecido en muchos de los manuales de hoy en día, incluyendo el Perl oficial página de manual, no es más que una backronym. El nombre no se sostiene oficialmente para nada, así que todas sus letras en mayúsculas es incorrecta. Capitalización adecuada se considera un santo y seña en la comunidad Perl. Varias otras expansiones se han propuesto, incluyendo el propio humorística Patológicamente Eclectic Rubbish Lister de Wall. De hecho, Wall afirma que el nombre tenía la intención de inspirar a muchas expansiones diferentes.

El camello símbolo

Programación Perl, publicado por O'Reilly Media, cuenta con una imagen de un camello en la portada, y que comúnmente se conoce como El Libro Camel. Esta imagen de un camello se ha convertido en un símbolo general de Perl.

También es una hackers emblema, que aparece en algunos Camisetas y otras prendas de vestir.

O'Reilly es propietaria de la imagen como marca, pero dice que usa sus derechos legales sólo para proteger la "integridad y el impacto de ese símbolo". O'Reilly permite el uso no comercial del símbolo, y ofrece programación República de Perl y logotipos Desarrollado por Perl botones.

Visión de conjunto

Perl es un lenguaje de programación de propósito general, originalmente desarrollado para la manipulación de texto y ahora se utiliza para una amplia gama de tareas incluyendo la administración del sistema, desarrollo web, programación de la red, GUI desarrollo, y más.

El lenguaje se pretende que sea práctico (fácil de usar, eficiente, completo) en lugar de hermosa (pequeña, elegante, mínimo). Sus principales características incluyen soporte para múltiples paradigmas de programación ( procesal, orientada a objetos, y estilos funcionales), recuento de referencias gestión de memoria (sin un recolector de basura ciclo de detección), soporte integrado para el procesamiento de textos, y una gran colección de terceros módulos.

Según Larry Wall, Perl tiene dos consignas. La primera es "Hay más de una manera de hacerlo", comúnmente conocida como TMTOWTDI y la segunda es "cosas fáciles deben ser fáciles y cosas duras deberían ser posibles".

Características

La estructura general de Perl deriva ampliamente de C. Perl es de naturaleza procesal, con variables, expresiones, instrucciones de asignación, delimitados por llaves bloques de código, estructuras de control, y subrutinas.

Perl también tiene características de programación del shell. Todas las variables están marcados con el líder sigilos, que identifican inequívocamente el tipo de datos (escalar, array, hachís, etc.) de la variable en el contexto. Es importante destacar que estos signos permiten variables para interpolar directamente en cadenas. Perl tiene muchas funciones integradas que proporcionan herramientas de uso frecuente en la programación del shell (aunque muchas de estas herramientas se aplican los programas exteriores al depósito) como la clasificación, y pidiendo a las instalaciones del sistema.

Perl toma listas de Lisp, arrays asociativos (hashes) de AWK, y expresiones regulares de sed. Estos simplifican y facilitan muchos análisis, manejo de texto, y las tareas de gestión de datos.

En Perl 5, se añadieron características que compleja apoyo estructuras de datos, funciones de primer nivel (es decir, cierres como los valores), y un modelo de programación orientada a objetos. Éstos incluyen referencias, paquetes, método de envío basada en la clase, y ámbito léxico las variables, junto con directivas del compilador (por ejemplo, el pragma estricto). Una característica adicional importante introducida con Perl 5 fue la capacidad de empaquetar código como módulos reutilizables. Larry Wall indicó más adelante que "Todo el propósito del sistema de módulos de Perl 5 fue fomentar el crecimiento de la cultura Perl en lugar del núcleo de Perl".

Todas las versiones de Perl hacen asignación automática de datos y la gestión de memoria. El intérprete conoce el tipo y las necesidades de cada objeto de datos en el programa; reserva y libera espacio a medida que sea necesario el uso de recuento de referencia (lo que no puede desasignar estructuras de datos circulares sin intervención manual). Conversiones de tipo legales, por ejemplo, las conversiones de número a cadena se realiza automáticamente en tiempo de ejecución; las ilegales son errores fatales.

Diseño

El diseño de Perl se puede entender como una respuesta a las tres grandes tendencias en la industria de la computación: la caída de los costos de hardware, aumento de los costos laborales, y mejoras en la tecnología de compilador. Muchos lenguajes de programación anteriores, como Fortran y C, fueron diseñados para hacer un uso eficiente del hardware caro. Por el contrario, Perl está diseñado para hacer un uso eficiente de los programadores de computadoras costosas.

Perl tiene muchas características que facilitan la tarea del programador a expensas de mayores requisitos de CPU y memoria. Estos incluyen la gestión de memoria automática; tipado dinámico; cadenas, listas y hashes; expresiones regulares; introspección y una función eval ().

Muro fue entrenado como lingüista, y el diseño de Perl está muy informada por principios lingüísticos. Los ejemplos incluyen Codificación Huffman (construcciones comunes deben ser cortos), buen fin de ponderación (la información importante debe ser lo primero), y una gran colección de primitivas del lenguaje. Perl favorece construcciones del lenguaje que son concisos y natural para los seres humanos a leer y escribir, incluso en los que complican el intérprete Perl.

Sintaxis Perl refleja la idea de que "las cosas que son diferentes deben tener un aspecto diferente". Por ejemplo, escalares, arrays y hashes tienen diferente de liderazgo sigilos. Índices de matriz y claves hash utilizan diferentes tipos de llaves. Cuerdas y expresiones regulares tienen diferentes delimitadores estándar. Este enfoque puede ser contrastado con lenguajes como Lisp, donde el mismo Construcción S-expresión y la sintaxis básica se utiliza para muchos propósitos diferentes.

Perl no hace cumplir cualquier paradigma de programación particular (procesal, orientado a objetos, funcionales, etc.) o incluso requiere que el programador para elegir entre ellos.

Existe un amplio sentido práctico tanto para el lenguaje Perl y la comunidad y la cultura que lo rodea. El prefacio de programación Perl comienza, "Perl es un lenguaje para conseguir hacer su trabajo." Una consecuencia de esto es que Perl no es un lenguaje ordenado. Incluye muchas características, tolera excepciones a sus reglas, y emplea la heurística para resolver las ambigüedades sintácticas. Debido a la naturaleza de perdón del compilador, errores a veces puede ser difícil de encontrar. Discutir el comportamiento variante de funciones incorporadas en la lista y escalares contextos, la perlfunc (1) en el manual dice "En general, ellos lo que quieres, si no quiere consistencia."

Perl tiene varios lemas que transmiten aspectos de su diseño y uso. Uno es " Hay más de una manera de hacerlo "(TIMTOWTDI, por lo general se pronuncia" Tim Toady ') Otros son. "Perl:. La motosierra ejército suizo de Lenguajes de Programación" y "No hay límites innecesarios" Un objetivo declarado de Perl es hacer. tareas fáciles fácil y tareas difíciles posible. Perl también se ha llamado "la cinta adhesiva de la Internet".

No hay ninguna especificación escrita o estándar para el lenguaje Perl, y no hay planes para crear uno para la versión actual de Perl. Sólo ha habido una implementación de la intérprete. Ese intérprete, junto con sus pruebas funcionales, se erige como una especificación de facto de la lengua.

Aplicaciones

Perl tiene muchas y variadas aplicaciones, agravadas por la disponibilidad de muchos módulos estándar y de terceros.

Perl se ha utilizado desde los primeros días de la Web para escribir Scripts CGI. Es conocida como una de "las tres P" (junto con Python y PHP), los lenguajes dinámicos más populares para la creación de aplicaciones Web. También es un componente integral de la popular LÁMPARA pila de soluciones para el desarrollo web. Los grandes proyectos escritos en Perl incluyen Slash, Bugzilla, TWiki y Movable Type. Muchos sitios web de alto tráfico, tales como bbc.co.uk, Amazon.com, LiveJournal.com, Ticketmaster.com y IMDb.com utilizar Perl ampliamente.

Perl se utiliza a menudo como un idioma pegamento, atando los sistemas e interfaces que no fueron diseñados específicamente para interoperar, y para "los datos munging", es decir, la conversión o el procesamiento de grandes cantidades de datos para tareas como la creación de informes. De hecho, estas fortalezas están íntimamente ligados. La combinación hace perl un popular herramienta de uso múltiple para administradores de sistemas, especialmente los programas como cortos se pueden introducir y ejecutar en una sola línea de comandos.

Con un grado de cuidado, el código Perl se puede hacer portable a través de Windows y Unix. Código Perl portátil se utiliza a menudo por los proveedores de software (tanto COTS y medida) para simplificar el envasado y el mantenimiento de la compilación de software y scripts de despliegue.

Las interfaces gráficas de usuario (GUI de) pueden ser desarrollados usando Perl. En particular, Perl / Tk se utiliza comúnmente para permitir la interacción del usuario con scripts de Perl. Esta interacción puede ser síncrono o asíncrono mediante devoluciones de llamada para actualizar la interfaz gráfica de usuario. Para obtener más información acerca de las tecnologías involucradas sede Tk, Tcl y WxPerl.

Perl es también ampliamente utilizado en las finanzas y la bioinformática , donde se valora por el rápido desarrollo y despliegue de aplicaciones, y la capacidad de manejar grandes conjuntos de datos.

Implementación

Perl se implementa como un intérprete de núcleo, escrito en C, junto con una gran colección de módulos, escrito en Perl y C. La distribución de código fuente es, a partir de 2005, 12 MB cuando se envasa en una archivo tar y comprimido. El intérprete es de 150.000 líneas de código C y compila a un 1 MB ejecutable en arquitecturas típicas. Por otra parte, el intérprete puede ser compilado en una biblioteca de enlace y se incrustó en otros programas. Hay cerca de 500 módulos en la distribución, que comprende 200.000 líneas de Perl y un adicional de 350 mil líneas de código C. (Gran parte del código C en los módulos consiste en tablas de codificación de caracteres.)

El intérprete tiene una arquitectura orientada a objetos. Todos los elementos del lenguaje Perl escalares, arrays, hashes, coderefs, archivo asas están representados en el intérprete de C estructuras. Las operaciones en estas estructuras se definen por una gran colección de macros, typedefs y funciones; estos constituyen la API Perl C. La API de Perl puede ser desconcertante para los no iniciados, pero sus puntos de entrada de seguir un esquema de nomenclatura coherente, que proporciona orientación a los que lo usan.

La ejecución de un programa Perl divide a grandes rasgos en dos fases: en tiempo de compilación y tiempo de ejecución. En tiempo de compilación, el intérprete analiza el texto del programa en un árbol sintáctico. En tiempo de ejecución, ejecuta el programa de recorrer el árbol. El texto se analiza sólo una vez, y el árbol de sintaxis está sujeto a la optimización antes de que se ejecuta, por lo que la fase de ejecución es relativamente eficiente. Optimizaciones en tiempo de compilación en el árbol de sintaxis incluyen plegado constante y la propagación del contexto, pero También se lleva a cabo la optimización de mirilla. Sin embargo, en tiempo de compilación y tiempo de ejecución fases pueden nido: BEGIN bloques de código se ejecutan en tiempo de compilación, mientras que el eval función inicia la compilación en tiempo de ejecución. Ambas operaciones son una parte implícita de un número de otros, sobre todo, el use cláusula que carga las bibliotecas, conocido en Perl como módulos, implica una BEGIN bloque.

Perl tiene una pantalla sensible al contexto gramática que puede ser afectada por el código ejecutado durante una fase de tiempo de ejecución intermitente. Por lo tanto Perl no se puede analizar por una recta Lex / Yacc lexer combinación / analizador. En su lugar, el intérprete implementa su propio léxico, que coordina con un modificado GNU analizador de Bison para resolver ambigüedades en el lenguaje. Se dice que "sólo puede analizar perl Perl", lo que significa que sólo el intérprete Perl (perl) puede analizar el lenguaje Perl (Perl). La verdad de esto es atestiguada por las imperfecciones persistentes de otros programas que llevan a cabo para analizar Perl, tales como analizadores de código fuente y auto-penetradores, que tienen que lidiar no sólo con las muchas maneras de expresar construcciones sintácticas ambiguas, sino también el hecho que Perl no se puede analizar en el caso general sin ejecutarlo. Aunque con éxito en la creación de un programa de análisis de Perl para fines relacionados con los documentos, el proyecto PPI determinó que analizar código Perl como un documento (que conserva su integridad) y como código ejecutable simultáneamente era, de hecho, no es posible. En concreto, el autor afirmó que, "analizar Perl sufre de la ' Problema de la parada. '"

Perl se distribuye con unos 120.000 pruebas funcionales. Estos se ejecutan como parte del proceso de construcción normal, y extensamente ejercen el intérprete y sus módulos básicos. Los desarrolladores de Perl se basan en las pruebas funcionales para asegurar que los cambios en el intérprete no introducen errores; por el contrario, los usuarios de Perl que ven el intérprete pasar sus pruebas de funcionamiento de su sistema pueden tener un alto grado de confianza de que está funcionando correctamente.

Mantenimiento de la intérprete de Perl se ha convertido cada vez más difícil en los últimos años. El código base ha estado en continuo desarrollo desde 1994. El código ha sido optimizado para un rendimiento a expensas de la simplicidad, claridad y fuertes interfaces internas. Las nuevas características se han añadido, sin embargo, se mantiene la compatibilidad hacia atrás prácticamente completa con versiones anteriores. El tamaño y la complejidad del intérprete es una barrera para los desarrolladores que deseen trabajar en él.

Disponibilidad

Perl es software libre, y se distribuye bajo licencia tanto el Licencia Artística y la GNU General Public License. Las distribuciones están disponibles para la mayoría sistemas operativos. Es particularmente frecuente en Unix y Sistemas de tipo Unix, pero se ha portado a la mayoría de las plataformas (obsoletos y muchos) modernos. Con sólo seis informaron excepciones, Perl puede ser compilado a partir de código fuente en todo tipo Unix, Plataformas compatibles con POSIX o compatibles Unix lo contrario. Sin embargo, esto rara vez es necesario, como Perl está incluido en la instalación por defecto de muchos sistemas operativos populares.

Debido a los cambios inusuales necesarios para la Mac OS entorno Classic, un puerto especial llamado MacPerl fue enviado de forma independiente.

El CPAN lleva una lista completa de las plataformas compatibles con los enlaces a las distribuciones disponibles en cada una.

Ventanas

Los usuarios de Microsoft Windows suele instalar una de las distribuciones binarias nativos de Perl para Win32, con mayor frecuencia ActivePerl. La compilación de Perl desde código fuente en Windows es posible, pero la mayoría de las instalaciones carecen del compilador de C requerida y herramientas de construcción. Esto también hace que sea difícil de instalar módulos del CPAN, en particular los que están parcialmente escrito en C.

Los usuarios de la distribución binaria ActivePerl tanto, dependen de los módulos previstos en reenvasados Repositorio de módulos de ActiveState, que están precompilados y puede ser instalado con PPM. La limitación de recursos para mantener este repositorio han sido motivo de diversos problemas de larga data.

Para hacer frente a este y otros problemas de Perl en la plataforma Windows, win32.perl.org fue lanzado por Adam Kennedy en nombre de La Fundación Perl en junio de 2006. Se trata de una comunidad web para "todas las cosas de Windows y Perl." Un objetivo principal de este proyecto es proporcionar distribuciones de Perl alternativas de calidad de producción que incluyen un compilador de C embebido y construyen herramientas, a fin de que los usuarios de Windows para instalar módulos directamente desde el CPAN. La distribución de la producción en la familia se conoce como Strawberry Perl, con la investigación y el trabajo experimental realizado en una relacionada Distribución Vanilla Perl.

Otra forma popular de ejecutar Perl bajo Windows es proporcionada por el Capa de emulación Cygwin. Cygwin proporciona un entorno Unix en Windows y ambos Perl y CPAN están convenientemente disponibles como paquetes precompilados estándar en el programa de instalación de Cygwin. Desde Cygwin también incluye el gcc, la compilación de Perl de la fuente también es posible.

La estructura del lenguaje

En Perl, el mínimo Hola mundo se puede escribir de la siguiente manera:

 print "Hola, mundo! \ n"

Este imprime el cadena Hola, mundo! y un de nueva línea, simbólicamente expresado por un n personaje cuya interpretación se ve alterado por la anterior carácter de escape (una barra invertida).

La forma canónica del programa es un poco más detallado:

 #! / Usr / bin / perl
 print "Hola, mundo! \ n";

El carácter de almohadilla introduce un comentar en Perl, que se extiende hasta el final de la línea de código y es ignorado por el compilador. El comentario se utiliza aquí es de un tipo especial: se llama la línea tinglado. Esto le dice a los sistemas operativos tipo Unix como dónde encontrar el intérprete de Perl, por lo que es posible invocar el programa sin mencionar explícitamente perl . (Tenga en cuenta que el de Microsoft Windows sistemas, programas Perl se invocan normalmente asociando el .pl extensión con el intérprete de Perl. Con el fin de hacer frente a tales circunstancias, perl detecta la línea shebang y lo analiza para interruptores, lo que no es estrictamente cierto que la línea shebang es ignorado por el compilador.)

La segunda línea en la forma canónica incluye un punto y coma, que se utiliza para separar declaraciones en Perl. Con sólo una única instrucción en un bloque o archivo, un separador es innecesario, por lo que se puede omitir de la forma mínima del programa, o más generalmente de la declaración final en cualquier bloque o archivo. La forma canónica incluye porque es común para terminar cada declaración, incluso cuando es necesario hacerlo, ya que esto hace más fácil la edición: código puede añadirse o se alejó de la final de un bloque o un archivo sin tener que ajustar el punto y coma.

Versión 5.10 de Perl presenta un say de función que añade implícitamente un carácter de nueva línea a su salida, por lo que el "Hola mundo" programa mínimo aún más corto:

 decir "Hola, mundo!"

Los tipos de datos

Perl tiene un número de fundamental tipos de datos, el uso más común y ser discutidos: escalares, matrices, hashes, filehandles y subrutinas:

  • La escalar es un único valor; puede ser un número, una cadena o una referencia
  • Una matriz es una colección ordenada de escalares
  • Un hash, o matriz asociativa, es un mapa de las cadenas a escalares; las cuerdas se llaman las llaves y los escalares se llaman valores.
  • La identificador de archivo es un mapa a un archivo, dispositivo o tubo, que está abierto para la lectura, la escritura, o ambos.
  • Una subrutina es un pedazo de código que se puede pasar argumentos, ser ejecutado, y restablecer datos

La mayoría de las variables están marcadas por un líder sigilo, que identifica el tipo de datos que se accede (no el tipo de la variable de sí mismo), excepto filehandles, que no tienen un sigilo. El mismo nombre puede ser utilizado para las variables de diferentes tipos de datos, sin conflicto.

 $ Foo # un escalar
 foo # una matriz
 % Foo # un hash
 FOO # un identificador de archivo
 Y FOO # una constante (pero el y es opcional)
 Y foo # una subrutina (pero el y es opcional)

Identificadores de archivo y constantes no necesitan estar en mayúsculas, pero es una convención común debido al hecho de que no hay sigilo para denotar ellos. Ambos son de alcance mundial, pero identificadores de archivo son intercambiables con referencias para presentar mangos, que pueden almacenarse en escalares, que a su vez permitan ámbito léxico. Si lo hace, se fomenta en Perl Mejores Prácticas de Damian Conway. Como ventaja, la open función en Perl 5.6 y versiones posteriores se autovivify escalares definidas para presentar referencias de la manija.

Los números se escriben en forma desnuda; cadenas estaban rodeadas por comillas de diversos tipos.

 $ Name = "joe";
 $ Color = "rojo";
 
 $ Número1 = 42;
 $ número2 = '42';
 
 # Este resultado true
 if ($ número1 == $ número2) {impresión "Los números y series de números son los mismos!";}
 
 $ Respuesta = "La respuesta es $ número1"; # interpolación variable: La respuesta es 42
 $ Precio = 'Este dispositivo cuesta $ 42'; # No interpolación entre comillas simples
 
 $ Álbum = "Es \ de David Bowie" Heroes \ ""; # citas literales dentro de una cadena;
 $ Álbum = 'It \' s David Bowie \ 's "Heroes"; # mismo que el anterior, con comillas simples;
 $ Álbum = q (Es s David Bowie '"Héroes" s); # la cita-como operadores q () y qq () permiten
  # Casi cualquier delimitador en lugar de citas, a
  # Evitar backslashing excesiva
 
 $ Multilined_string = <  
 

Perl convertirá cadenas en números y viceversa, dependiendo del contexto en el que se utilizan. En el siguiente ejemplo la cadenas $ ny $ m son tratados como números cuando ellos son los argumentos para el operador de suma. Este código imprime el número '5', descartando la información no numérica para la operación, aunque los valores de las variables siguen siendo los mismos. (El operador de concatenación de cadenas es el período, no el + símbolo.)

 $ N = "3 manzanas ';
 $ m = '2 naranjas';
 print $ n + $ m;

Perl también tiene un contexto booleano que utiliza en la evaluación de las sentencias condicionales. Los siguientes valores de todos los evalúan como falso en Perl:

 $ False = 0; # el número cero
 $ False = 0,0; # el número cero como un flotador
 $ False = 0b0; # el número cero en binario
 $ False = 0x0; # el número cero en hexadecimal
 $ false = '0'; # la cadena cero
 $ False = ""; # la cadena vacía
 $ False = undef; # el valor de retorno de undef

Todos los demás valores se evalúan a true. Esto incluye la cadena impar auto-descripción literal de "0 pero cierto", que de hecho es 0 como un número, pero cierto cuando se usa como un valor lógico. (Cualquier cadena no numérica sería también tienen esta propiedad, pero esta cadena en particular es ignorado por Perl con respecto a las advertencias numéricos.) Una versión menos explícitas pero más conceptualmente portátil de esta cadena es "0E0" o "0E0", que no lo hace confiar en los personajes que se está evaluando como 0, como "0E0" es literalmente "cero veces diez a la potencia cero."

Expresiones booleanas evaluadas también devuelven valores escalares. Aunque la documentación no promete que todo verdadero o falso se devuelve (y por lo tanto no se puede confiar en), muchos operadores booleanos devuelven 1 para verdadero y la cadena vacía para falso (que evalúa a cero en un contexto numérico). La función defined () indica si la variable tiene ningún valor establecido. En los ejemplos anteriores definidos ($ false) es cierto para todos los valores excepto undef.

Si el resultado se necesita específicamente 1 o 0 (como en C), una conversión explícita se cree por algunos autores que se requiere:

 mi $ REAL_RESULT = $ boolean_result 1: 0;

Sin embargo, si se sabe que el valor es 1 o undef, una conversión implícita se puede utilizar en su lugar:

 mi $ REAL_RESULT = $ boolean_result + 0;

Una lista está escrito enumerando sus elementos, separados por comas y encerrados entre paréntesis cuando sea necesario por precedencia de operadores.

 scores = (32, 45, 16, 5);

Se puede escribir muchas otras maneras también, algunas directas y otras no tanto:

 # Una manera explícita y directa
 scores = ('32', '45', '16', '5');
 
 # Equivalente a la anterior, pero el qw () operador comilla-como salva tipificación de
 # comillas y comas y reduce el desorden visual;  casi cualquier delimitador puede ser
 # Utilizado en lugar de paréntesis
 scores = qw (32 45 16 5);
 
 # La función split devuelve una lista de cadenas, que se extraen
 # En la expresión que utiliza una plantilla de expresiones regulares.
 # Esto puede ser útil para la lectura de un archivo de valores separados por comas (CSV)
 scores = split /, /, '32, 45,16,5 ';
 
 # También es posible utilizar un sufijo para el operador y aliasing de
 # La variable $ _ magia al siguiente valor de la lista durante cada
 # Iteración;  esto no tiene sentido aquí, pero modismos similares son ampliamente utilizados
 # En algunas circunstancias.
 empujarscores, $ _ foreach 32, 45, 16, 5;

Un hash se puede inicializar de una lista de pares clave / valor:

 % Favorito = (
  joe => 'rojo',
  sam => 'blue'
 );

El => operador es equivalente a una coma, excepto que asume las comillas que el testigo anterior, si se trata de un identificador desnudo: (joe => 'red') es la misma que ('joe' => 'red') . Por lo tanto, se puede utilizar para eludir comillas, la mejora de la legibilidad.

Los elementos individuales de una lista se accede al proporcionar un índice numérico, entre corchetes. Los valores individuales en un hash se accede al proporcionar la clave correspondiente, entre llaves. El $ sigilo identifica el elemento de acceso en formato de escalar.

 $ puntajes [2] # un elemento descores
 $ Favorita {joe} # un valor en% favorito

Por lo tanto, un hash también se puede especificar mediante el establecimiento de sus teclas individualmente:

 $ Favorita {joe} = "rojo";
 $ Favorita {sam} = "azul";

Múltiples elementos se puede acceder mediante el uso de la @ sigilo lugar (identificando el resultado como una lista).

 scores [2, 3, 1] # tres elementos descores
 favorite {'joe', 'sam'} # dos valores en% favorito
 favorite {qw (joe sam)} # mismo que el anterior

El número de elementos de una matriz se puede obtener mediante la evaluación de la matriz en contexto escalar o con la ayuda de la $# sigilo. El último da el índice del último elemento de la matriz, no el número de elementos Nota:. El resaltado de sintaxis en el software de Wikipedia considera erróneamente una parte del código siguiente para ser parte de los comentarios.

 $ Count =friends; # Asignación a un fuerzas contexto escalar escalar
 
 $ # amigos; # El índice del último elemento enfriends
 $ # Amigos + 1; # Por lo general, el número de elementos enfriends es uno más
  # De $ # amigos porque el primer elemento está en el índice 0,
  # 1 no, a menos que el programador restablece a un diferente
  # Valor, que la mayoría de los manuales de Perl desalientan.

Hay algunas funciones que operan sobre hashes enteras.

 names = teclas% de direcciones;
 addresses = valores de% de direcciones;
 
 # Cada llamada a cada devuelve el siguiente par clave / valor.
 # Todos los valores serán eventualmente devueltos, pero su fin
 # No se puede predecir.
 while (($ name, $ address) = cada libreta de direcciones%) {
  print "$ name vive en $ dirección \ n";
 }
 
 # Al igual que el anterior, pero por orden alfabético
 foreach my $ next_name (claves de ordenación% libreta de direcciones) {
  print "$ next_name vive en $ libreta de direcciones {$ next_name} \ n";
 }

Estructuras de control

Perl tiene varios tipos de estructuras de control.

Tiene estructuras de control orientados a bloques, similares a los de la C, Javascript y Java lenguajes de programación. Condiciones están rodeados de paréntesis, y los bloques controlados están rodeados de llaves:

 etiqueta while (cond) {...}
 etiqueta while (cond) {...} continuar {...}
 etiquetar para (init-expr; cond-expr; incr-expr) {...}
 var etiqueta foreach (lista) {...}
 var etiqueta foreach (lista) {...} continuar {...}
 si (cond) {...}
 si (cond) {...} else {...}
 si (cond) {...} elsif (cond) {...} else {...}

Cuando sólo se controla una sola declaración, los modificadores de instrucciones proporcionan una sintaxis más concisa:

 sentencia si cond;
 declaración a menos cond;
 declaración mientras cond;
 declaración hasta cond;
 lista foreach declaración;

Operadores lógicos de cortocircuito se utilizan comúnmente para afectar el flujo de control en el nivel de expresión:

 expr y expr
 expr && expr
 expr o expr
 expr || expr

(La "y" y "o" Los operadores son similares a && y || pero tienen menor prioridad, lo que hace más fácil su uso para controlar los estados enteros.)

Las palabras clave de control de flujo next (que corresponden a de C continue ), last (correspondiente a la C break ), return , y redo son expresiones, para que puedan ser utilizados con los operadores de cortocircuito.

Perl también tiene dos construcciones de bucle implícitas, cada uno de los cuales tiene dos formas:

 resultados = grep {...} lista
 resultados = expr grep, lista
 resultados = mapa {...} lista
 resultados = mapa expr, lista

grep devuelve todos los elementos de la lista para la que el bloque o la expresión controlada evalúa a true. map evalúa el bloque controlado o una expresión para cada elemento de la lista y devuelve una lista de los valores resultantes. Estas construcciones permiten una sencilla estilo de programación funcional.

Hasta la liberación 5.10.0, no había sentencia switch en Perl 5. De 5.10.0 en adelante, una declaración rama de múltiples vías llamada given / when está disponible, que toma la forma siguiente:

dado (expr) {si (cond) {...} default {...}}

Sintácticamente, esta estructura se comporta de manera similar a cambiar de encontrar en otros idiomas declaración, pero con algunas diferencias importantes. El más grande es que a diferencia de las estructuras del interruptor / de casos, dado / cuando los estados se rompen ejecución después de la primera rama de éxito, en lugar de esperar a que los comandos de quiebre explícitamente definidos. Por el contrario, continúa explícita son lugar necesario para emular el comportamiento del interruptor.

Para aquellos que no utilizan la versión 5.10.0, la documentación de Perl describe una media docena de maneras de lograr el mismo efecto mediante el uso de otras estructuras de control. También hay una Interruptor de módulo, que proporciona una funcionalidad inspirada en la próxima Perl 6 rediseño. Se lleva a cabo utilizando un filtro de origen, por lo que su uso no se recomienda no oficial.

Perl incluye una etiqueta Goto declaración, pero rara vez se utiliza. Situaciones en las que una ir se pide en otros idiomas no se producen con tanta frecuencia en Perl debido a su amplitud de opciones de control de flujo.

También hay una Goto y sub declaración que realiza una llamada de cola. Se termina la subrutina actual y llama de inmediato la especificada sub . Esto se utiliza en situaciones en las que una persona que llama puede realizar más eficiente la gestión de pila de Perl en sí (por lo general debido a que no se requiere cambio de la pila actual), y en la recursividad profunda vocación cola puede tener un impacto positivo sustancial en el rendimiento, ya que evita la sobrecarga de alcance / apilar gestión en la declaración.

Subrutinas

Las subrutinas se definen con la sub palabra clave, y se invocan con sólo nombrarlos. Si la subrutina en cuestión aún no ha sido declarada, la invocación requiere ya sea entre paréntesis después del nombre de la función o un signo ( y ) antes de ella. Pero el uso y sin paréntesis también pasará implícitamente los argumentos de la subrutina actual a la llamada, y el uso y con paréntesis pasará por alto prototipos.

# Llamando una subrutina
 
Los paréntesis son necesarios aquí si la subrutina se define más adelante en el código #foo() ;
y foo ; # (esto también funciona, pero tiene otras consecuencias en relación con los argumentos que se pasan a la subrutina)
 
# Definir una subrutina
subfoo{ .. . }foo; no son necesarios # Aquí paréntesis

Una lista de argumentos puede ser proporcionado después del nombre de la subrutina. Los argumentos pueden ser escalares, listas o hashes.

foo$ x , @ y , z% ;

Los parámetros a una subrutina no tienen que ser declarados como a cualquier número o tipo; de hecho, pueden variar de llamada a llamada. Cualquier validación de parámetros debe realizarse explícitamente dentro de la subrutina.

Las matrices se expanden a sus elementos, hashes se expanden a una lista de pares clave / valor, y se pasa todo el lote a la subrutina como una lista plana de escalares.

Cualesquiera que sean los argumentos se pasan están disponibles a la subrutina en la matriz especial _ . Los elementos de _ son alias de los argumentos reales; cambiar un elemento de _ cambios que el argumento correspondiente.

Elementos de_pueden ser accedidos por subíndices de la manera habitual.

$ _ [ 0 ] , $ _ [ 1 ]

Sin embargo, el código resultante puede ser difícil de leer, y los parámetros tienenpasar por referencia semántica, que pueden ser indeseables.

Un idioma común es asignar_a una lista de variables con nombre.

 mi ( $ x , $ y , $ z ) = _ ;

Esto proporciona los nombres de parámetros mnemotécnicos e implementa pasar por valor semántica. La mi palabra clave indica que las siguientes variables se alcance léxico al bloque que contiene.

Otro modismo es cambiar los parámetros fuera de _ . Esto es especialmente común cuando la subrutina toma sólo un argumento, o para el manejo de la $ Self argumentación en módulos orientados a objetos.

mi $ x = cambio ;

Las subrutinas pueden asignar _ a un hash para simular argumentos con nombre; esto se recomienda en Perl Best Practices para subrutinas que probablemente nunca tener más de tres parámetros.

subfunction1{
 mis % args = _ ;
 impresión "argumento de 'x' era '$ args {x}'\\ n" ;
 }function1(x=> 23 ) ;

Las subrutinas pueden devolver valores.

volver 42 , $ x , @ y , z% ;

Si la subrutina no sale a través de un regreso comunicado, a continuación, devuelve la última expresión evaluada dentro del cuerpo subrutina. Los arrays y hashes en el valor de retorno se amplían a las listas de escalares, tal como son los argumentos.

La expresión devuelta se evalúa en el contexto de llamada de la subrutina; esto puede sorprender a los incautos.

sublista{( 4 , 5 , 6 )}
subconjunto{ x = ( 4 , 5 , 6 ) ; x }
 
$ x =lista; # devuelve 6 - último elemento de la lista
$ x =array; # retornos 3 - número de elementos en la lista
x =lista; # devuelve (4, 5, 6)
x =array; # devuelve (4, 5, 6)

Una subrutina puede descubrir su contexto que llama con lawantarrayfunción.

subsea{
 volver wantarray ? ( 1 , 2 ) : 'Naranjas' ;
 }
 
$ x =bien; # devuelve "Naranjas"
x =bien; # devuelve (1, 2)

Expresiones regulares

El lenguaje Perl incluye una sintaxis especial para escribir expresiones regulares (RE o expresiones regulares), y el intérprete contiene un motor de búsqueda de cadenas de expresiones regulares. El motor de expresiones regulares utiliza un algoritmo de vuelta atrás, extendiendo sus capacidades desde la simple coincidencia de patrones de captura de cuerda y de sustitución. El motor de expresiones regulares se deriva de expresiones regulares escritas por Henry Spencer.

La sintaxis de expresiones regulares de Perl fue tomada originalmente de Unix Versión 8 expresiones regulares. Sin embargo, se separaron antes de que la primera versión de Perl, y desde entonces ha crecido para incluir muchas más características. Otros lenguajes y aplicaciones están adoptando expresiones regulares compatibles de Perl sobre expresiones regulares POSIX incluyendo PHP, Ruby, Java , de Microsoft .NET Framework y el servidor Apache HTTP.

Sintaxis de expresión regular es extremadamente compacto, debido a la historia. Los primeros dialectos de expresiones regulares eran sólo un poco más expresivo que pegotes, y la sintaxis fue diseñada de manera que una expresión se parecería el texto que coincide. Esto significaba el uso de no más de un solo carácter puntuacion o un par de delimitación de caracteres para expresar las pocas afirmaciones compatibles. Con el tiempo, la expresividad de las expresiones regulares creció enormemente, pero el diseño de sintaxis nunca fue revisado y sigue dependiendo de puntuacion. Como resultado, las expresiones regulares pueden ser críptico y muy denso.

Usos

El m // (partido) operador introduce una coincidencia de expresiones regulares. (Si está delimitada por barras, como en todos los ejemplos aquí, entonces el líder m puede ser omitido por razones de brevedad. Si el m está presente, como en todos los ejemplos siguientes, otros delimitadores pueden ser utilizados en lugar de barras.) En el más simple caso, una expresión como

$ X = ~ m /abc/

evalúa a verdaderosi y sólo si la cadena$ Xcoincide con la expresión regularabecedario.

Els ///(suplente) del operador, por otro lado, especifica una operación de búsqueda y reemplazo:

$ X = ~ s / abc / ABC / ; # upcase la b

Otro uso de expresiones regulares es especificar los delimitadores para ladivisiónfunción:

words = fracción m /, / , $ línea ;

La división función crea una lista de las partes de la cadena separados por partidos de la expresión regular. En este ejemplo, una línea se divide en una lista de sus partes separados por comas, y esta lista es entonces asignado a la words matriz.

Sintaxis

Algunas partes de una expresión regular pueden ir entre paréntesis; correspondientes partes de una cadena coincidente se capturaron . Cadenas capturadas son asignados a la secuencial integrado en las variables $ 1, $ 2, $ 3, ... , y una lista de cadenas capturadas se devuelve como el valor del partido.

$ X = ~ (.) m / a c / ; # capturar el carácter entre "a" y "c"

Expresiones regulares de Perl pueden tomar modificadores . Estos son los sufijos de una sola letra que modifican el significado de la expresión:

$ X = ~ m / abc / i ; # mayúsculas y minúsculas ajuste de patrones
$ x = ~ s / abc / ABC / g ; # búsqueda global y reemplazar

Desde las expresiones regulares pueden ser denso y críptico debido a su sintaxis compacto, el / X modificador se añadió en Perl para ayudar a los programadores escribir expresiones regulares más legibles. Se permite a los programadores para colocar espacios en blanco y comentarios dentro de las expresiones regulares:

$ X = ~ m /unpartido # 'a'
 . # seguido de cualquier carácterc# y luego seguido por el 'c'character
 /x;

Las interfaces de bases de datos

Perl es ampliamente favorecida para aplicaciones de bases de datos. Sus instalaciones de manipulación de texto son útiles para generar consultas SQL; arrays, hashes y gestión automática de memoria hacen que sea fácil para recoger y procesar los datos devueltos.

En las primeras versiones de Perl, las interfaces de bases de datos fueron creados por volver a vincular el intérprete con una biblioteca de base de datos de cliente. Esto fue lo suficientemente difícil que sólo se hizo para algunas de las bases de datos más importantes y ampliamente usados, y restringió el resultado perl ejecutable con una sola interfaz de base de datos a la vez.

En Perl 5, las interfaces de bases de datos son implementadas por los módulos de Perl DBI. El módulo DBI (Base de datos Interface) presenta una interfaz única y de base de datos independiente para aplicaciones Perl, mientras que los módulos DBD (base de datos del conductor) manejan los detalles de acceso a unas 50 bases de datos diferentes; hay conductores DBD para la mayoría de las ANSI bases de datos SQL.

DBI ofrece almacenamiento en caché para las manijas de bases de datos y consultas, que puede mejorar considerablemente el rendimiento en entornos de ejecución de larga vida tales comomod_perl, ayudando a los sistemas de alto volumen apartan picos de carga como en elefecto Slashdot.

Rendimiento comparativo

El Lenguaje de ordenadores Benchmarks Juego comparar el rendimiento de las implementaciones de problemas de programación típicos en varios lenguajes de programación. Las implementaciones de Perl presentados eran normalmente hacia el extremo superior del espectro de uso de la memoria, y tuvo resultados variados velocidad. Rendimiento de Perl en el juego de referencia es similar a otros lenguajes interpretados como Python, más rápido que PHP, y significativamente más rápido que Ruby, pero más lento que los idiomas más compilados.

Programas Perl pueden comenzar lento que programas similares en lenguajes compilados porque perl tiene que compilar el código cada vez que se ejecuta. En una charla en la YAPC :: Europa 2005 Conferencia y en el artículo siguiente, "Un comienzo oportuna", Jean-Louis Leroy encontró que sus programas Perl tomó mucho más tiempo para ejecutar lo que él esperaba, porque el intérprete perl pasó gran parte del tiempo en encontrar módulos PORQUE de su sobre-gran ruta de inclusión. Porque antes de la compilación sigue siendo una parte experimental de Perl, a diferencia de la de Java, Python y programas Rubí-Perl pagar esta multa sobrecarga en cada ejecución. Cuando amortizan en una fase de largo plazo, el tiempo de inicio no es típicamente sustancial, pero la medición de muy cortos tiempos de ejecución a menudo pueden estar sesgadas como a menudo se encuentran en los puntos de referencia.

Una serie de herramientas se han introducido para mejorar esta situación, la primera de las cuales fue de Apachemod_perl, que pretendía abordar una de las razones más comunes que los pequeños programas de Perl fueron invocados rápidamente:CGIWeb. desarrolloActivePerl, a través de MicrosoftISAPI ofrece un rendimiento similar mejoras.

Una vez que se compila código Perl, hay una sobrecarga adicional durante la fase de ejecución que normalmente no está presente para los programas escritos en lenguajes compilados como C o C ++, incluyendo, entre otras muchas cosas, los gastos generales debido a la interpretación de código de bytes, la gestión de la memoria de referencia de conteo, y el tipo dinámico de cheques.

Optimización

Programas de Perl, como cualquier código, pueden ser sintonizados para un rendimiento utilizando puntos de referencia y los perfiles después de una aplicación legible y correcta está terminado. En parte debido a la naturaleza interpretada de Perl, escribiendo más eficientes en Perl no siempre será suficiente para cumplir con uno de los objetivos de rendimiento para un programa.

En tales situaciones, las rutinas más críticos de un programa Perl se pueden escribir en otros idiomas como C o ensamblador, que se pueden conectar a través de módulos de Perl Inline sencillas o más complejas, pero flexible mecanismo XS. Nicholas Clark, un desarrollador del núcleo Perl, se analizan algunos de diseño Perl compensaciones y algunas soluciones en Cuando perl no es lo bastante rápido .

En casos extremos, la optimización de Perl puede requerir conocimiento íntimo del funcionamiento del intérprete en vez de habilidad con algoritmos, el lenguaje Perl, o principios generales de optimización.

Futuro

En el 2000 Conferencia Perl, Jon Orwant hizo un caso de una importante iniciativa de la lengua nueva. Esto llevó a la decisión de comenzar a trabajar en un nuevo diseño de la lengua, que se llamará Perl 6. Las propuestas de nuevas características del lenguaje se solicitaron de la comunidad Perl en general, y más de 300 se presentaron RFC.

Larry Wall pasó los próximos años para digerir las RFC y sintetizarlos en un marco coherente para Perl 6. Ha presentado su diseño para Perl 6 en una serie de documentos llamados "apocalipsis", que están numerados para corresponder a capítulos de programación Perl ( "El libro del camello"). La actual especificación, aún no finalizado de Perl 6 se encapsula en los documentos de diseño llamados Sinopsis, que están numerados para corresponder al Apocalipsis.

Perl 6 no se pretende que sea compatible hacia atrás, aunque habrá un modo de compatibilidad.

Trabajo de tesis por Bradley M. Kuhn, supervisado por Larry Wall, considerado el posible uso de la máquina virtual Java como un tiempo de ejecución para Perl .. tesis de Kuhn mostró que este enfoque es problemático, y en 2001, se decidió que Perl 6 correría en una entre lenguajes máquina virtual llamado Parrot. Esto significará que otros idiomas dirigidos al loro obtendrán acceso nativo a CPAN, lo que permite un cierto nivel de desarrollo entre lenguajes.

En el año 2005 Audrey Tang creó el proyecto pugs, una implementación de Perl 6 en Haskell. Esta era y sigue actuando como plataforma de prueba para el Perl 6 idiomas (aparte del desarrollo de la aplicación real) que permite a los diseñadores del lenguaje para explorar. El proyecto pugs generó una comunidad activa cruzada lenguaje Perl / Haskell en torno a la freenode # canal de irc Perl6.

Una serie de características en el lenguaje Perl 6 ahora muestran similitudes con Haskell y Perl 6 ha sido adoptado por la comunidad Haskell como un lenguaje de scripting potencial.

A partir de 2006, Perl 6, del loro, y pugs están bajo desarrollo activo, y un nuevo módulo de Perl 5 llamadov6 permite algo de código Perl 6 para ejecutar directamente encima de Perl 5.

Desarrollo de Perl 5 también continúa. Perl 5.10 fue lanzado en diciembre de 2007, con algunas nuevas características influenciados por el diseño de Perl 6.

La comunidad Perl

Cultura y comunidad de Perl ha desarrollado junto con el lenguaje mismo. Usenet fue el primer lugar público en el que se introdujo Perl, pero en el transcurso de su evolución, la comunidad de Perl se forma por el crecimiento de la ampliación de los servicios basados ​​en Internet, incluyendo la introducción del Mundo Wide Web. La comunidad que rodea Perl era, de hecho, el tema de la primera "Estado de la Cebolla" de Larry Wall charla.

Estado de la cebolla

Estado de la cebolla es el nombre para cada año de Larry Wall resúmenes de estilo magistral sobre el progreso de Perl y su comunidad. Se caracterizan por su humor sello, empleando referencias a Perl y de la cultura hacker en general, así como lingüística y, a veces su formación cristiana de Wall.

Cada charla se da primero en varias conferencias de Perl y eventualmente publicó también en línea.

Pasatiempos

Pasatiempos de Perl se han convertido en un elemento definitorio de la comunidad. Se incluyen entre ellos son usos triviales y complejas de la lengua.

JAPHs

En correo electrónico, Usenet y tablero de mensajes publicaciones, "Sólo otro hacker de Perl "programas (Japh) se han convertido en una tendencia común, originada porRandal L. Schwartz, uno de los primeros entrenadores Perl profesionales.

En el lenguaje de la cultura Perl, los programadores de Perl son conocidos como hackers Perl, ya partir de este se deriva de la práctica de escribir programas cortos para imprimir la frase " Sólo otro hacker de Perl ". En el espíritu del concepto original, estos programas están moderadamente ofuscado y lo suficientemente corto como para caber en la firma de un mensaje de correo electrónico o Usenet. El JAPH "canónica" incluye la coma al final, aunque esto a menudo se omite.

Perl golf

Perl "campo" es el pasatiempo de reducir el número de caracteres utilizados en un programa Perl al mínimo, tanto como la forma en campos de los jugadores tratan de tener el menor número de golpes posibles en una ronda. Este uso de la palabra "golf" originalmente se centró en los JAPHs empleados en firmas en publicaciones de Usenet y en otros lugares, aunque los mismos trucos habían sido un pasatiempo sin nombre en el lenguaje APL en las décadas anteriores. El uso de Perl para escribir un programa que lleva a cabo el cifrado RSA provocó un gran interés y práctica en este pasatiempo. En los años siguientes, el código de golf ha sido tomado como un pasatiempo en otros idiomas además de Perl.

Ofuscación

Al igual que en C,competiciones de código ofuscado son un pasatiempo muy conocido. El anual ofuscado concurso Perl hizo un arco virtud de la flexibilidad sintáctica de Perl.

Poesía

Similar al código ofuscado y el golf, pero con un propósito diferente, Perl poesía es la práctica de escribir poemas que en realidad puede ser compilado como legal (aunque generalmente sin sentido) código Perl. Esta afición es más o menos única para Perl debido al gran número de palabras en inglés regulares utilizadas en el lenguaje. Nuevos poemas se publican regularmente en la sección de Perl Poesía del sitio Perl Monjes.

CPAN Acme

También hay muchos ejemplos de código escritas exclusivamente para el entretenimiento en el CPAN. Lingua :: :: Romana Perligata , por ejemplo, permite escribir programas en América . Tras la ejecución de un programa de este tipo, el módulo traduce el código fuente en Perl regular y lo ejecuta.

La comunidad Perl ha destinado al " espacio de nombres Acme "para los módulos que son divertidas en la naturaleza (si bien su alcance se ha ampliado para incluir código exploratorio o experimental o cualquier otro módulo que no se entiende en ser utilizado en la producción). Algunos de los módulos Acme se implementan deliberadamente en formas divertidas. Esto incluye Acme :: Bleach , uno de los primeros módulos en el Acme :: espacio de nombres, que permite que el código fuente del programa para ser "blanqueado" (es decir, todos los caracteres reemplazados por espacios en blanco) y sin embargo, todavía funcionan.

Recuperado de " http://en.wikipedia.org/w/index.php?title=Perl&oldid=227514814 "