Articulo de referencia

Perl

or [[GNU General Public License]] version 1 or any later version "},"website":{"wt":"{{URL|https://www.perl.org/|perl.org}}"},"wikibooks":{"wt":"Perl Programming"},"released":{"...

Perl es un lenguaje de programación de alto nivel , de propósito general , interpretado y dinámico . Aunque Perl no es oficialmente un acrónimo, [ 8 ] existen varios acrónimos inversos en uso, incluido "Practical Extraction and Reporting Language". [ 9 ]

Perl fue desarrollado por Larry Wall en 1987 como un lenguaje de scripting Unix de propósito general para facilitar el procesamiento de informes. [ 10 ] [ 11 ] Desde entonces, ha sufrido muchos cambios y revisiones. Originalmente, Perl no se escribía con mayúscula inicial y el nombre se cambió a mayúscula inicial cuando se lanzó Perl 4. [ 11 ] La última versión es Perl 5, lanzada por primera vez en 1994. Desde 2000 hasta octubre de 2019, una sexta versión de Perl estuvo en desarrollo; el nombre de la sexta versión se cambió a Raku . [ 12 ] [ 13 ] Ambos lenguajes continúan siendo desarrollados de forma independiente por diferentes equipos de desarrollo que toman prestadas ideas libremente entre sí.

Perl toma prestadas características de otros lenguajes de programación, incluidos C , sh , AWK y sed . [ 1 ] Proporciona funcionalidades de procesamiento de texto sin los límites arbitrarios de longitud de datos de muchas herramientas de línea de comandos de Unix contemporáneas . [ 14 ] Perl es un lenguaje de programación altamente expresivo : el código fuente de un algoritmo dado puede ser corto y altamente compresible. [ 15 ] [ 16 ]

Perl ganó gran popularidad a mediados de la década de 1990 como lenguaje de scripting CGI , en parte debido a sus potentes capacidades de expresiones regulares y análisis de cadenas . [ 17 ] [ 18 ] [ 19 ] [ 20 ] Además de CGI, Perl 5 se utiliza para administración de sistemas , programación de redes , finanzas, bioinformática y otras aplicaciones, como interfaces gráficas de usuario (GUI). Ha sido apodado "la motosierra suiza de los lenguajes de scripting" debido a su flexibilidad y potencia. [ 21 ] En 1998, también se le denominó "la cinta adhesiva que mantiene unido Internet ", en referencia tanto a su uso generalizado como lenguaje de unión como a su percibida falta de elegancia. [ 22 ]

Nombre y logotipos

El símbolo del camello utilizado por O'Reilly Media
El logotipo de la cebolla utilizado por la Fundación Perl

Perl se llamaba originalmente "Pearl". Wall quería darle al lenguaje un nombre corto con connotaciones positivas. [ 23 ] Sin embargo, Wall descubrió el lenguaje PEARL existente antes del lanzamiento oficial de Perl y eliminó la "a" del nombre. [ 24 ]

El nombre se expande ocasionalmente como un acrónimo inverso : Practical Extraction and Report Language [ 25 ] y el propio Wall's Pathologically Eclectic Rubbish Lister , que se encuentra en la página del manual de perl. [ 26 ]

El libro Programming Perl , publicado por O'Reilly Media , presenta una imagen de un camello dromedario en la portada y se conoce comúnmente como el "Libro del Camello". [ 27 ] Esta imagen se ha convertido en un símbolo no oficial de Perl. O'Reilly posee la imagen como marca registrada , pero la licencia para uso no comercial , requiriendo únicamente un reconocimiento y un enlace a www.perl.com. La concesión de licencias para uso comercial se decide caso por caso. [ 28 ] O'Reilly también proporciona logotipos de "Programming Republic of Perl" para sitios no comerciales y botones de "Powered by Perl" para cualquier sitio que utilice Perl. [ 28 ]

La Fundación Perl posee un símbolo alternativo, una cebolla, que licencia a sus subsidiarias, Perl Mongers, PerlMonks, Perl.org y otras. [ 29 ] El símbolo es un juego de palabras visual con cebolla perlada . [ 30 ]

En 2024, un pequeño grupo de desarrolladores publicó un nuevo logotipo de camello para el lenguaje [ 31 ] bajo una licencia Creative Commons . Si bien no es un logotipo oficial, pretende representar tanto al lenguaje como a la comunidad y se inspira en la larga relación de Perl con el camello, tal como se menciona en el libro de O'Reilly.

Historia

Versiones tempranas

Larry Wall comenzó a trabajar en Perl en 1987, mientras trabajaba como programador en Unisys ; [ 14 ] lanzó la versión 1.0 el 18 de diciembre de 1987. [ 1 ] Wall basó las primeras versiones de Perl en algunos métodos que los lenguajes existentes utilizaban para la manipulación de texto.

Perl 2, lanzado en junio de 1988, [ 32 ] [ 33 ] presentaba un motor de expresiones regulares mejorado. Perl 3, lanzado en octubre de 1989, [ 32 ] añadió soporte para flujos de datos binarios . [ 34 ]

década de 1990

Originalmente, la única documentación para Perl era una sola página man extensa . En 1991, se publicó Programming Perl , conocido por muchos programadores de Perl como el "Libro Camello" debido a su portada, y se convirtió en la referencia de facto para el lenguaje. [ 35 ] Al mismo tiempo, el número de versión de Perl se elevó a 4, no para marcar un cambio importante en el lenguaje sino para identificar la versión que estaba bien documentada en el libro. [ 36 ] Perl 4 se lanzó en marzo de 1991. [ 32 ]

Perl 4 pasó por una serie de versiones de mantenimiento , culminando en Perl 4.036 en 1993, momento en el que Wall abandonó Perl 4 para comenzar a trabajar en Perl 5. El diseño inicial de Perl 5 continuó hasta 1994. La lista de correo perl5-porters se estableció en mayo de 1994 para coordinar el trabajo de portabilidad de Perl 5 a diferentes plataformas. Sigue siendo el foro principal para el desarrollo, mantenimiento y portabilidad de Perl 5. [ 37 ]

Perl 5.000 se publicó el 17 de octubre de 1994. [ 38 ] Fue una reescritura casi completa del intérprete y añadió muchas características nuevas al lenguaje, incluyendo objetos , referencias , variables léxicas (my) y módulos . Es importante destacar que los módulos proporcionaron un mecanismo para extender el lenguaje sin modificar el intérprete. Esto permitió estabilizar el intérprete principal, al tiempo que posibilitó que los programadores de Perl comunes añadieran nuevas características al lenguaje. Perl 5 ha estado en desarrollo activo desde entonces.

Perl 5.001 se publicó el 13 de marzo de 1995. Perl 5.002 se publicó el 29 de febrero de 1996 con la nueva función de prototipos. Esto permitió a los autores de módulos crear subrutinas que se comportaban como funciones integradas de Perl . Perl 5.003 se publicó el 25 de junio de 1996 como una versión de seguridad. [ 39 ]

Uno de los eventos más importantes en la historia de Perl 5 tuvo lugar fuera del lenguaje propiamente dicho y fue consecuencia de su soporte para módulos. El 26 de octubre de 1995, se estableció la Comprehensive Perl Archive Network (CPAN) como repositorio para el lenguaje Perl y los módulos Perl ; a diciembre de 2022, contiene más de 211.850 módulos en 43.865 distribuciones, escritos por más de 14.324 autores, y está replicado en todo el mundo en más de 245 ubicaciones. [ 40 ]

Perl 5.004 se publicó el 15 de mayo de 1997 e incluyó, entre otras cosas, el paquete UNIVERSAL, que proporcionó a Perl un objeto base del que se derivaban automáticamente todas las clases y la capacidad de requerir versiones de módulos. Otro desarrollo significativo fue la inclusión del módulo CGI.pm , [ 41 ] que contribuyó a la popularidad de Perl como lenguaje de scripting CGI . [ 42 ]

Perl 5.004 añadió soporte para Microsoft Windows , Plan 9 , QNX y AmigaOS . [ 41 ]

Perl 5.005 se publicó el 22 de julio de 1998. Esta versión incluía varias mejoras al motor de expresiones regulares , nuevos ganchos para el backend a través de los B::*módulos, el qr//operador de comillas de expresiones regulares, una gran selección de otros nuevos módulos centrales y soporte añadido para varios sistemas operativos más, incluido BeOS . [ 43 ]

2000–2020

Perl 5.6 se lanzó el 22 de marzo de 2000. Los cambios principales incluyeron soporte para 64 bits , representación de cadenas Unicode , soporte para archivos de más de 2 GiB y la palabra clave "our". [ 45 ] [ 46 ] Al desarrollar Perl 5.6, se decidió cambiar el esquema de versiones a uno más similar al de otros proyectos de código abierto; después de 5.005_63, la siguiente versión fue 5.5.640, con planes para que las versiones de desarrollo tuvieran números impares y las versiones estables números pares. [ 47 ]

En 2000, Wall solicitó sugerencias a la comunidad para una nueva versión de Perl. El proceso dio como resultado 361 documentos RFC ( Request for Comments ) que se utilizarían para guiar el desarrollo de Perl 6. En 2001, [ 48 ] comenzó el trabajo en los "Apocalypses" para Perl 6, una serie de documentos destinados a resumir las solicitudes de cambio y presentar el diseño de la siguiente generación de Perl. Se presentaron como un resumen de los RFC, en lugar de un documento formal. En ese momento, Perl 6 existía solo como la descripción de un lenguaje.

Perl 5.8 se lanzó por primera vez el 18 de julio de 2002, y desde entonces se han lanzado versiones 5.X aproximadamente cada año. Perl 5.8 mejoró la compatibilidad con Unicode, añadió una nueva implementación de E/S, añadió una nueva implementación de subprocesos, mejoró la precisión numérica y añadió varios módulos nuevos. [ 49 ] En 2013, esta versión seguía siendo la más popular de Perl y era utilizada por Red Hat Linux 5, SUSE Linux 10, Solaris 10, HP-UX 11.31 y AIX 5.

En 2004, se comenzó a trabajar en las "Sinopsis", documentos que originalmente resumían los Apocalipsis, pero que se convirtieron en la especificación del lenguaje Perl 6. En febrero de 2005, Audrey Tang comenzó a trabajar en Pugs , un intérprete de Perl 6 escrito en Haskell . [ 50 ] Este fue el primer esfuerzo concertado para hacer de Perl 6 una realidad. Este esfuerzo se estancó en 2006. [ 51 ]

El proyecto Perl On New Internal Engine (PONIE) existió desde 2003 hasta 2006. Su objetivo era servir de puente entre Perl 5 y 6, y reescribir el intérprete de Perl 5 para que se ejecutara en la máquina virtual Parrot de Perl 6. La meta era garantizar el futuro de los millones de líneas de código Perl 5 en miles de empresas de todo el mundo. [ 52 ] El proyecto PONIE finalizó en 2006 y ya no se desarrolla activamente. Algunas de las mejoras realizadas al intérprete de Perl 5 como parte de PONIE se incorporaron a dicho proyecto. [ 53 ]

El 18 de diciembre de 2007, en el 20.º aniversario de Perl 1.0, se lanzó Perl 5.10.0. Perl 5.10.0 incluyó nuevas características notables que lo acercaron a Perl 6. Estas incluyeron una instrucción switch (llamada "given"/"when"), actualizaciones de expresiones regulares y el operador de coincidencia inteligente (~~). [ 54 ] [ 55 ] Casi al mismo tiempo, comenzó el desarrollo en serio de otra implementación de Perl 6 conocida como Rakudo Perl, desarrollada en conjunto con la máquina virtual Parrot . Desde noviembre de 2009, Rakudo Perl ha tenido lanzamientos mensuales regulares y ahora es la implementación más completa de Perl 6.

Con Perl 5.11 se produjo un cambio importante en el proceso de desarrollo de Perl 5: la comunidad de desarrolladores adoptó un ciclo de lanzamiento mensual para las versiones de desarrollo, con un calendario anual para las versiones estables. Según este plan, las correcciones de errores se publicarán cada tres meses después de las versiones estables.

El 12 de abril de 2010 se lanzó Perl 5.12.0. Entre las mejoras principales destacan la nueva package NAME VERSIONsintaxis, el operador yada yada (diseñado para marcar código de marcador de posición que aún no está implementado), restricciones implícitas , cumplimiento total con Y2038 , sobrecarga de conversión de expresiones regulares, compatibilidad con DTrace y Unicode 5.2. [ 56 ]

El 14 de mayo de 2011, se lanzó Perl 5.14 con soporte JSON integrado. [ 57 ]

El 20 de mayo de 2012 se lanzó Perl 5.16. Entre las novedades más destacadas se incluye la posibilidad de especificar una versión concreta de Perl que se desee emular, lo que permite a los usuarios actualizar su versión de Perl y seguir ejecutando scripts antiguos que normalmente serían incompatibles. [ 58 ] Perl 5.16 también actualiza el núcleo para admitir Unicode 6.1. [ 58 ]

El 18 de mayo de 2013 se lanzó Perl 5.18. Entre las novedades más destacadas se incluyen los nuevos ganchos dtrace, subrutinas léxicas, más subrutinas CORE::, una revisión del hash por motivos de seguridad y compatibilidad con Unicode 6.2. [ 59 ]

El 27 de mayo de 2014 se lanzó Perl 5.20. Entre las novedades más destacadas se incluyen firmas de subrutinas, segmentaciones hash/nueva sintaxis de segmentación, desreferenciación postfija (experimental), Unicode 6.3 y una función rand() que utiliza un generador de números aleatorios consistente. [ 60 ]

Algunos observadores atribuyen al lanzamiento de Perl 5.10 el inicio del movimiento Modern Perl. [ 61 ] En particular, esta frase describe un estilo de desarrollo que adopta el uso de CPAN, aprovecha los desarrollos recientes del lenguaje y es riguroso en la creación de código de alta calidad. [ 62 ] Si bien el libro Modern Perl [ 63 ] puede ser el abanderado más visible de esta idea, otros grupos como la Enlightened Perl Organization [ 64 ] han asumido la causa.

A finales de 2012 y en 2013, comenzaron varios proyectos para implementaciones alternativas de Perl 5: Perl5 en Perl6 por el equipo Rakudo Perl, [ 65 ] moe por Stevan Little y amigos, [ 66 ] p2 [ 67 ] por el equipo Perl11 bajo Reini Urban, gperl por goccy , [ 68 ] y rperl , un proyecto de Kickstarter liderado por Will Braswell y afiliado al proyecto Perl11. [ 69 ]

Perl 6 y Raku

Camelia , el logotipo del proyecto Perl 6 [ 70 ]

En la Conferencia Perl de 2000 , Jon Orwant defendió una importante iniciativa para un nuevo lenguaje. [ 71 ] Esto llevó a la decisión de comenzar a trabajar en un rediseño del lenguaje, que se llamaría Perl 6. Se solicitaron propuestas de nuevas características del lenguaje a la comunidad Perl en general, que presentó más de 300 RFC . [ 72 ]

Wall dedicó los siguientes años a analizar los RFC y sintetizarlos en un marco coherente para Perl 6. Presentó su diseño para Perl 6 en una serie de documentos llamados "apocalipsis", numerados para corresponder a los capítulos de Programming Perl . A partir de enero de 2011 , la especificación en desarrollo de Perl 6 fue encapsulada en documentos de diseño llamados Synopses, numerados para corresponder a Apocalypses. [ 73 ]

El trabajo de tesis de Bradley M. Kuhn , supervisado por Wall, consideró el posible uso de la máquina virtual Java como entorno de ejecución para Perl. [ 74 ] La tesis de Kuhn demostró que este enfoque era problemático. En 2001, se decidió que Perl 6 se ejecutaría en una máquina virtual multilingüe llamada Parrot .

En 2005, Audrey Tang creó el proyecto Pugs , una implementación de Perl 6 en Haskell . Este proyecto sirvió como plataforma de prueba para el lenguaje Perl 6 (independiente del desarrollo de la implementación propiamente dicha), permitiendo a los diseñadores del lenguaje explorar sus posibilidades. El proyecto Pugs dio origen a una activa comunidad interlingüística Perl/Haskell centrada en el canal IRC #raku de Libera Chat . El equipo de diseño de Perl 6 incorporó numerosas influencias de la programación funcional . [ 75 ]

En 2012, el desarrollo de Perl 6 se centró principalmente en dos compiladores: [ 76 ]

  1. Rakudo , una implementación que se ejecuta en la máquina virtual Parrot y en la máquina virtual Java. [ 77 ]
  2. Niecza , que tiene como objetivo el Common Language Runtime .

En 2013, se anunció MoarVM ("Metamodel On A Runtime"), una máquina virtual basada en el lenguaje C diseñada principalmente para Rakudo. [ 78 ]

En octubre de 2019, Perl 6 pasó a llamarse Raku. [ 79 ]

A partir de 2017Solo la implementación de Rakudo y MoarVM están en desarrollo activo, y se admiten otras máquinas virtuales, como la Máquina Virtual de Java y JavaScript . [ 80 ]

Perl 7

En junio de 2020, se anunció Perl 7 como sucesor de Perl 5. [ 81 ] Inicialmente, Perl 7 se basaría en Perl 5.32, con un lanzamiento previsto para la primera mitad de 2021 y versiones candidatas antes. [ 82 ]

Este plan fue revisado en mayo de 2021, sin especificar ningún plazo de lanzamiento ni versión de Perl 5 para usar como base. [ 83 ] Cuando se lanzara Perl 7, Perl 5 entraría en mantenimiento a largo plazo. Sin embargo, las versiones de Perl 5 compatibles seguirían recibiendo importantes correcciones de seguridad y errores. [ 84 ]

Perl 7 se anunció el 24 de junio de 2020 en "The Perl Conference in the Cloud" como sucesor de Perl 5. [ 82 ] [ 81 ] Basado en Perl 5.32, Perl 7 se planeó para ser retrocompatible con el código moderno de Perl 5; el código de Perl 5, sin el encabezado de plantilla (pragma) necesita agregarse use compat::perl5;para mantener la compatibilidad, pero el código moderno puede eliminar parte de la plantilla.

El plan de migrar a Perl 7 generó más debate, y el Comité Directivo de Perl lo canceló para evitar problemas de compatibilidad con versiones anteriores de los scripts que no se habían escrito con las directivas y módulos que se convertirían en los predeterminados en Perl 7. Perl 7 solo se lanzará cuando los desarrolladores añadan suficientes características como para justificar una actualización de versión principal. [ 85 ]

Diseño

Filosofía

Según Wall, Perl tiene dos lemas. El primero es "Hay más de una forma de hacerlo", comúnmente conocido como TMTOWTDI (pronunciado Tim Toady ). Como argumentan los defensores de este lema, esta filosofía facilita la redacción de declaraciones concisas. [ 86 ] [ 87 ] [ 88 ]

El segundo eslogan es "Las cosas fáciles deberían ser fáciles y las difíciles deberían ser posibles". [ 14 ]

El diseño de Perl puede entenderse como una respuesta a tres tendencias generales en la industria informática: la disminución de los costos del hardware, el aumento de los costos laborales y las mejoras en la tecnología de compiladores . Muchos lenguajes de programación anteriores, como Fortran y C, buscaban hacer un uso eficiente del costoso hardware informático. En cambio, Perl fue diseñado para que los programadores pudieran escribir programas de forma más rápida y sencilla. [ 89 ]

Perl tiene muchas características que facilitan la tarea del programador a costa de mayores requisitos de CPU y memoria. Estas incluyen gestión automática de memoria; tipado dinámico ; cadenas, listas y hashes; expresiones regulares; introspección ; y una eval()función. Perl sigue la teoría de "sin límites incorporados" [ 27 ] , una idea similar a la regla cero-uno-infinito .

Wall se formó como lingüista, y el diseño de Perl se basa en gran medida en principios lingüísticos . Algunos ejemplos incluyen la codificación Huffman (las construcciones comunes deben ser breves), una buena ponderación al final (la información importante debe ir primero) y una amplia colección de primitivas lingüísticas . Perl favorece las construcciones lingüísticas que son concisas y naturales para que las escriban los humanos, incluso cuando complican el intérprete de Perl. [ 90 ]

La sintaxis de Perl refleja la idea de que "las cosas que son diferentes deben verse diferentes". [ 91 ] Por ejemplo, los escalares, los arreglos y los hashes tienen diferentes símbolos iniciales. Los índices de los arreglos y las claves de los hashes usan diferentes tipos de llaves. Las cadenas y las expresiones regulares tienen diferentes delimitadores estándar.

El lenguaje Perl, así como la comunidad y la cultura que lo rodean, tienen una marcada vocación práctica. El prefacio de Programming Perl comienza así: «Perl es un lenguaje para realizar tu trabajo». [ 14 ] Una consecuencia de esto es que Perl no es un lenguaje ordenado. Incluye numerosas características, tolera excepciones a sus reglas y emplea heurísticas para resolver ambigüedades sintácticas. Debido a la naturaleza permisiva del compilador, a veces resulta difícil encontrar errores. La documentación de funciones de Perl comenta sobre el comportamiento variable de las funciones integradas en contextos de lista y escalares diciendo: «En general, hacen lo que se espera, a menos que se busque consistencia». [ 92 ]

Características

La estructura general de Perl deriva ampliamente de C. Perl es de naturaleza procedimental , con variables , expresiones , sentencias de asignación , bloques delimitados por llaves , estructuras de control y subrutinas . [ 93 ]

Perl también toma características de la programación de shell. Todas las variables se marcan con símbolos iniciales, lo que permite interpolar variables directamente en cadenas . Sin embargo, a diferencia del shell, Perl usa símbolos en todos los accesos a variables, y a diferencia de la mayoría de los demás lenguajes de programación que usan símbolos, el símbolo no denota el tipo de la variable, sino el tipo de la expresión. Así, por ejemplo, mientras que un array se denota con el símbolo "@" (por ejemplo, @arrayname), un miembro individual del array se denota con el símbolo escalar "$" (por ejemplo, $arrayname[3]). Perl también tiene muchas funciones integradas que proporcionan herramientas que se usan a menudo en la programación de shell (aunque muchas de estas herramientas son implementadas por programas externos al shell), como ordenar y llamar a las funciones del sistema operativo .

Perl hereda los hashes ("matrices asociativas") de AWK y las expresiones regulares de sed . Esto simplifica muchas tareas de análisis sintáctico, manipulación de texto y gestión de datos. Comparte con Lisp la devolución implícita del último valor de un bloque, y todas las sentencias son expresiones que pueden utilizarse en expresiones más extensas.

Perl 5 añadió características que admiten estructuras de datos complejas , funciones de primera clase (es decir, cierres como valores) y un modelo de programación orientada a objetos. Estas incluyen referencias , paquetes, despacho de métodos basado en clases y variables con ámbito léxico , junto con directivas del compilador (por ejemplo, la strictpragma ). Una característica adicional importante introducida con Perl 5 fue la capacidad de empaquetar código como módulos reutilizables. Wall afirmó posteriormente que "La intención principal del sistema de módulos de Perl 5 era fomentar el crecimiento de la cultura Perl en lugar del núcleo de Perl". [ 94 ]

Todas las versiones de Perl realizan tipado de datos y gestión de memoria automáticos . El intérprete conoce el tipo y los requisitos de almacenamiento de cada objeto de datos en el programa; asigna y libera memoria para ellos según sea necesario mediante el conteo de referencias (por lo que no puede liberar estructuras de datos circulares sin intervención manual). Las conversiones de tipo válidas , por ejemplo, de número a cadena, se realizan automáticamente en tiempo de ejecución ; las conversiones de tipo no válidas son errores fatales.

Sintaxis

Perl ha sido calificado como " ruido de línea " y un "lenguaje de solo escritura" por sus críticos. Randal L. Schwartz, en la primera edición del libro Learning Perl , [ 95 ] en el primer capítulo afirma: "Sí, a veces Perl parece ruido de línea para el no iniciado, pero para el programador experimentado de Perl, parece ruido de línea con suma de verificación y una misión en la vida". [ 96 ] También afirmó que la acusación de que Perl es un lenguaje de solo escritura podría evitarse programando con "el debido cuidado". [ 96 ] El documento de descripción general de Perl, perlintro, afirma que los nombres de las variables escalares "mágicas" integradas "parecen signos de puntuación o ruido de línea". [ 97 ] Sin embargo, el módulo English proporciona alternativas en inglés tanto largas como cortas. El documento perlstyle afirma que el ruido de línea en las expresiones regulares podría mitigarse utilizando el /xmodificador para agregar espacios en blanco. [ 98 ]

Según las FAQ de Perl 6 , [ 99 ] Perl 6 fue diseñado para mitigar "los sospechosos habituales" que provocan la afirmación de "ruido de línea" de los críticos de Perl 5, incluyendo la eliminación de "la mayoría de las variables de puntuación" y la sanitización de la sintaxis de expresiones regulares. Las FAQ de Perl 6 también afirman que lo que a veces se denomina ruido de línea de Perl es "la sintaxis real del lenguaje", al igual que los gerundios y las preposiciones son parte del idioma inglés . [ 99 ] En una publicación de blog de diciembre de 2012, a pesar de afirmar que "Rakudo Perl 6 ha fracasado y seguirá fracasando a menos que reciba una supervisión adulta", chromatic afirmó que el diseño de Perl 6 tiene una "gramática bien definida", un "sistema de tipos mejorado, un sistema de objetos unificado con un metamodelo inteligente , metaoperadores y un sistema de contexto más claro que proporciona sutilezas como la pereza generalizada". [ 100 ] También afirmó que "Perl 6 tiene una coherencia y una consistencia de las que carece Perl 5". [ 100 ]

En Perl, se podría escribir el programa "¡Hola, mundo!" de la siguiente manera:

Imprimir "¡Hola, mundo!\n" ;

Aquí tenéis un programa Perl más complejo que cuenta los segundos hacia atrás a partir de un valor inicial determinado:

#!/usr/bin/env perl use strict ; use warnings ;mi ( $restante , $total );$restante = $total = cambio ( @ARGV );STDOUT -> autoflush ( 1 );while ( $remaining ) { printf ( "Restante %s/%s \r" , $remaining -- , $total ); sleep 1 ; }imprimir "\n" ;

Para ejecutar el código anterior, guárdelo en un archivo llamado counter.ply luego ejecútelo.

$ perl counter.pl 42

El intérprete de Perl también se puede usar para scripts puntuales en la línea de comandos . El siguiente ejemplo (tal como se invoca desde un intérprete de comandos compatible con sh, como Bash ) traduce la cadena "Bob" en todos los archivos que terminan en .txt en el directorio actual a "Robert":

$ perl -i.bak -lp -e 's/Bob/Robert/g' *.txt 

Implementación

No existe ninguna especificación o estándar escrito para el lenguaje Perl en las versiones anteriores a Perl 5, y no hay planes para crear uno para la versión actual. Solo ha habido una implementación del intérprete, y el lenguaje ha evolucionado junto con ella. Dicho intérprete, junto con sus pruebas funcionales, constituye la especificación de facto del lenguaje. Sin embargo, Perl 6 comenzó con una especificación [ 101 ] , y varios proyectos [ 102 ] buscan implementar parte o la totalidad de dicha especificación.

Perl se implementa como un intérprete central, escrito en C, junto con una gran colección de módulos, escritos en Perl y C. A partir de 2010El intérprete consta de 150 000 líneas de código C y se compila en un  ejecutable de 1 MB en arquitecturas de máquina típicas. Alternativamente, el intérprete puede compilarse en una biblioteca de enlace e integrarse en otros programas. La distribución incluye casi 500 módulos, que comprenden 200 000 líneas de Perl y 350 000 líneas adicionales de código C (gran parte del código C de 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, matrices, hashes, referencias a código, descriptores de archivo) se representan en el intérprete mediante estructuras C. Las operaciones sobre estas estructuras se definen mediante una amplia colección de macros , definiciones de tipo y funciones; estas constituyen la API de Perl para C. La API de Perl puede resultar confusa para quienes no están familiarizados con ella, pero sus puntos de entrada siguen un esquema de nomenclatura coherente que sirve de guía a quienes la utilizan.

La vida de un intérprete de Perl se divide, a grandes rasgos, en una fase de compilación y una fase de ejecución. [ 103 ] Según Aluín et al., «Perl no puede ser analizado por una combinación directa de analizador léxico/sintáctico Lex/Yacc. En cambio, el intérprete implementa su propio analizador léxico, que se coordina con un analizador sintáctico GNU bison modificado para resolver las ambigüedades del lenguaje». [ 104 ]

La mayor parte de lo que ocurre en la fase de compilación de Perl es compilación, y la mayor parte de lo que ocurre en la fase de ejecución de Perl es ejecución, pero hay excepciones importantes. Perl hace un uso importante de su capacidad para ejecutar código Perl durante la fase de compilación. Perl también retrasará la compilación hasta la fase de ejecución. Los términos que indican el tipo de procesamiento que realmente está ocurriendo en un momento dado son tiempo de compilación y tiempo de ejecución . Perl está en tiempo de compilación en la mayoría de los puntos durante la fase de compilación, pero el tiempo de compilación también puede entrar en tiempo de compilación durante la fase de ejecución. El tiempo de compilación para el código en un argumento de cadena pasado a la evalfunción integrada ocurre durante la fase de ejecución. Perl a menudo está en tiempo de ejecución durante la fase de compilación y pasa la mayor parte de la fase de ejecución en tiempo de ejecución. El código en BEGINbloques se ejecuta en tiempo de ejecución pero en la fase de compilación.

En tiempo de compilación, el intérprete analiza el código Perl y lo convierte en un árbol sintáctico . En tiempo de ejecución, ejecuta el programa recorriendo el árbol . El texto se analiza solo una vez y el árbol sintáctico se optimiza antes de su ejecución, lo que resulta en una ejecución relativamente eficiente. Las optimizaciones en tiempo de compilación del árbol sintáctico incluyen la reducción de constantes y la propagación del contexto, pero también se realiza una optimización de tipo "peephole" . [ 105 ]

Perl tiene una gramática Turing-completa porque el análisis sintáctico puede verse afectado por el código ejecutado durante la fase de compilación. [ 106 ] El código no puede ser analizado por un analizador léxico/ sintáctico Lex / Yacc directo . Para resolver las ambigüedades del lenguaje, el intérprete debe implementar su propio analizador léxico para coordinarse con un analizador sintáctico GNU bison modificado . [ 107 ]

A menudo se dice que "Solo Perl puede analizar Perl" [ 108 ] , lo que significa que solo el intérprete de Perl ( perl) puede analizar el lenguaje Perl ( Perl ), pero incluso esto no es cierto en general. Dado que el intérprete de Perl puede simular una máquina de Turing durante su fase de compilación, necesitaría resolver el problema de la parada para completar el análisis en todos los casos. Es un resultado bien establecido que el problema de la parada es indecidible y, por lo tanto, ni siquiera Perl puede analizar Perl siempre. Perl toma la inusual decisión de dar al usuario acceso a toda su potencia de programación en su propia fase de compilación. El costo en términos de pureza teórica es alto, pero los inconvenientes prácticos parecen ser raros. [ 109 ]

Otros programas que se dedican a analizar Perl, como los analizadores de código fuente y los autoindentadores , deben lidiar no solo con construcciones sintácticas ambiguas , sino también con la indecidibilidad del análisis sintáctico de Perl en el caso general. El proyecto PPI de Adam Kennedy se centró en analizar el código Perl como un documento (manteniendo su integridad como tal), en lugar de analizarlo como código ejecutable (algo que ni siquiera Perl puede hacer siempre). Fue Kennedy quien conjeturó por primera vez que "el análisis sintáctico de Perl sufre del 'problema de la parada'" [ 110 ] , lo cual se demostró posteriormente. [ 111 ]

Perl se distribuye con más de 250 000 pruebas funcionales para el núcleo del lenguaje Perl y más de 250 000 pruebas funcionales para los módulos principales. Estas se ejecutan como parte del proceso de compilación habitual y ponen a prueba exhaustivamente el intérprete y sus módulos principales. Los desarrolladores de Perl confían en las pruebas funcionales para garantizar que los cambios en el intérprete no introduzcan errores de software ; además, los usuarios de Perl que comprueban que el intérprete supera las pruebas funcionales en su sistema pueden tener un alto grado de confianza en que funciona correctamente.

Puertos

Perl tiene doble licencia : la Licencia Artística 1.0 [ 4 ] [ 5 ] y la Licencia Pública General de GNU [ 6 ] . Existen distribuciones disponibles para la mayoría de los sistemas operativos . Es particularmente común en sistemas Unix y similares , pero se ha adaptado a la mayoría de las plataformas modernas (y a muchas obsoletas). Con solo seis excepciones reportadas, Perl se puede compilar desde el código fuente en todas las plataformas compatibles con POSIX o con Unix [ 112 ] .

Debido a los cambios inusuales necesarios para el entorno clásico de Mac OS , se distribuyó de forma independiente una versión especial llamada MacPerl. [ 113 ]

La Comprehensive Perl Archive Network contiene una lista completa de plataformas compatibles con enlaces a las distribuciones disponibles en cada una. [ 114 ] CPAN también es la fuente de módulos Perl disponibles públicamente que no forman parte de la distribución principal de Perl.

ActivePerl es una distribución de código cerrado de ActiveState que tiene lanzamientos regulares que siguen los lanzamientos principales de Perl. [ 115 ] La distribución incluía anteriormente el gestor de paquetes de Perl (PPM), [ 116 ] una herramienta popular para instalar, eliminar, actualizar y gestionar el uso de módulos comunes de Perl; sin embargo, esta herramienta se descontinuó a partir de ActivePerl 5.28. [ 117 ] También se incluye PerlScript , un motor de Windows Script Host (WSH) que implementa el lenguaje Perl. Visual Perl es una herramienta de ActiveState que agrega Perl al conjunto de herramientas de desarrollo Visual Studio .NET . Un convertidor de VBScript a Perl, un compilador de Perl para Windows y convertidores de AWK y sed a Perl también han sido producidos por esta compañía e incluidos en el CD de ActiveState para Windows , que incluye todas sus distribuciones más el IDE Komodo y todas excepto la primera en la variante Unix-Linux-POSIX del mismo en 2002 y posteriormente.

Actuación

El juego de evaluación comparativa de lenguajes de programación compara el rendimiento de implementaciones de problemas de programación típicos en varios lenguajes de programación. [ 118 ] Las implementaciones de Perl presentadas suelen tener un rendimiento elevado en cuanto al uso de memoria y ofrecen resultados de velocidad variables. El rendimiento de Perl en el juego de evaluación comparativa es típico de los lenguajes interpretados. [ 119 ]

Los programas Perl grandes se inician más lentamente que programas similares en lenguajes compilados porque Perl tiene que compilar el código fuente cada vez que se ejecuta. En una charla en la conferencia YAPC::Europe 2005 y en el artículo posterior "A Timely Start", Jean-Louis Leroy descubrió que sus programas Perl tardaban mucho más en ejecutarse de lo esperado porque el intérprete de Perl dedicaba un tiempo significativo a encontrar módulos dentro de su ruta de inclusión excesivamente grande. [ 120 ] A diferencia de Java, Python y Ruby, Perl solo tiene soporte experimental para la precompilación. [ 121 ] Por lo tanto, los programas Perl pagan esta penalización de sobrecarga en cada ejecución. La fase de ejecución de los programas típicos es lo suficientemente larga como para que el tiempo de inicio amortizado no sea sustancial, pero es probable que los benchmarks que miden tiempos de ejecución muy cortos estén sesgados debido a esta sobrecarga. [ 122 ]

Se han introducido varias herramientas para mejorar esta situación. La primera de ellas fue mod_perl de Apache , que buscaba abordar una de las razones más comunes por las que los pequeños programas Perl se ejecutaban rápidamente: el desarrollo web CGI . ActivePerl , a través de Microsoft ISAPI , proporciona mejoras de rendimiento similares. [ 123 ]

Una vez compilado el código Perl, existe una sobrecarga adicional durante la fase de ejecución que normalmente no está presente en programas escritos en lenguajes compilados como C o C++. Ejemplos de dicha sobrecarga incluyen la interpretación del código de bytes , la gestión de memoria mediante conteo de referencias y la comprobación dinámica de tipos. [ 124 ]

Las rutinas más críticas pueden escribirse en otros lenguajes (como C ), que pueden conectarse a Perl mediante módulos Inline simples o el mecanismo XS , más complejo pero flexible . [ 125 ]

Aplicaciones

Perl tiene muchas y variadas aplicaciones, lo que se ve agravado por la disponibilidad de numerosos módulos estándar y de terceros.

Perl se ha utilizado principalmente para escribir scripts CGI : entre los grandes proyectos escritos en Perl se incluyen cPanel , Slash , Bugzilla , RT , TWiki y Movable Type ; entre los sitios web de alto tráfico que utilizan Perl extensamente se incluyen Priceline.com , Craigslist , [ 126 ] IMDb , [ 127 ] LiveJournal , DuckDuckGo , [ 128 ] [ 129 ] Slashdot y Ticketmaster . También es un componente opcional de la popular pila de tecnología LAMP para el desarrollo web , en lugar de PHP o Python . Perl se utiliza ampliamente como lenguaje de programación de sistemas en la distribución Debian Linux . [ 130 ]

Perl se usa a menudo como lenguaje de unión , conectando sistemas e interfaces que no fueron diseñados específicamente para interoperar, y para el " procesamiento de datos " [ 131 ] , es decir, convertir o procesar grandes cantidades de datos para tareas como la creación de informes. Estas ventajas están íntimamente ligadas. La combinación convierte a Perl en un lenguaje popular de propósito general para administradores de sistemas , particularmente porque los programas cortos, a menudo llamados " programas de una línea ", se pueden ingresar y ejecutar en una sola línea de comandos .

El código Perl puede hacerse portable entre Windows y Unix; este código es utilizado frecuentemente por proveedores de software (tanto comercial estándar (COTS) como a medida) para simplificar el empaquetado y el mantenimiento de los scripts de compilación e implementación de software. [ 132 ]

Perl/Tk y wxPerl se utilizan habitualmente para añadir interfaces gráficas de usuario a los scripts de Perl.

Las capacidades de manejo de texto de Perl se pueden usar para generar consultas SQL ; los arreglos, hashes y la administración automática de memoria hacen que sea fácil recopilar y procesar los datos devueltos. Por ejemplo, en la interfaz de programación de aplicaciones (API) Perl DBI de Tim Bunce , los argumentos de la API pueden ser el texto de las consultas SQL; por lo tanto, es posible programar en varios lenguajes al mismo tiempo (por ejemplo, para generar una página web usando HTML , JavaScript y SQL en un documento here ). El uso de la interpolación de variables de Perl para personalizar programáticamente cada una de las consultas SQL, y la especificación de arreglos o hashes de Perl como las estructuras para contener programáticamente los conjuntos de datos resultantes de cada consulta SQL, permite un mecanismo de alto nivel para manejar grandes cantidades de datos para el posprocesamiento por un subprograma de Perl. [ 133 ] En versiones tempranas de Perl, las interfaces de base de datos se crearon volviendo a enlazar el intérprete con una biblioteca de base de datos del lado del cliente . Esto fue suficientemente difícil como para que solo se hiciera para algunas de las bases de datos más importantes y más utilizadas, y restringió el ejecutable resultante a usar solo una interfaz de base de datos a la vez. [ 134 ]perl

En Perl 5, las interfaces de bases de datos se implementan mediante módulos Perl DBI. El módulo DBI (Database Interface) presenta una interfaz única e independiente de la base de datos para las aplicaciones Perl, mientras que los módulos DBD (Database Driver) gestionan los detalles del acceso a unas 50 bases de datos diferentes; existen controladores DBD para la mayoría de las bases de datos SQL ANSI . [ 135 ]

DBI proporciona almacenamiento en caché para identificadores y consultas de bases de datos, lo que puede mejorar enormemente el rendimiento en entornos de ejecución de larga duración como mod_perl , [ 136 ] ayudando a los sistemas de alto volumen a evitar picos de carga como en el efecto Slashdot . [ 137 ]

En las aplicaciones Perl modernas, especialmente aquellas escritas usando marcos web como Catalyst , el módulo DBI se usa a menudo indirectamente a través de mapeadores objeto-relacionales como DBIx::Class , Class::DBI [ 138 ] o Rose::DB::Object [ 139 ] que generan consultas SQL y manejan datos de forma transparente para el autor de la aplicación. [ 140 ]

Comunidad

La cultura y la comunidad de Perl se han desarrollado a la par del propio lenguaje. Usenet fue el primer espacio público donde se presentó Perl, pero a lo largo de su evolución, la comunidad de Perl se vio influenciada por el crecimiento de los servicios basados ​​en Internet, incluida la introducción de la World Wide Web. De hecho, la comunidad que rodea a Perl fue el tema de la primera charla de Wall en "State of the Onion". [ 141 ]

«State of the Onion» es el nombre que recibe Wall al presentar anualmente resúmenes, al estilo de conferencias magistrales , sobre el progreso de Perl y su comunidad. Se caracterizan por su humor característico, con referencias a la cultura de Perl, la cultura hacker en general, su formación lingüística, a veces su vida familiar e incluso, ocasionalmente, su fe cristiana. [ 142 ] Cada charla se presenta primero en diversas conferencias de Perl y posteriormente se publica en línea.

En correos electrónicos, Usenet y foros de mensajes, los programas "Just another Perl hacker" (JAPH) son una tendencia común, originada por Randal L. Schwartz , uno de los primeros instructores profesionales de Perl. [ 143 ] En la jerga de la cultura Perl, a los programadores de Perl se les conoce como "Perl hackers", y de ahí deriva la práctica de escribir programas cortos para imprimir la frase "Just another Perl hacker " , [ sic ] ". Siguiendo el espíritu del concepto original, estos programas están moderadamente ofuscados y son lo suficientemente cortos como para caber en la firma de un correo electrónico o un mensaje de Usenet. El JAPH "canónico" desarrollado por Schwartz incluye la coma al final, aunque a menudo se omite. [ 144 ]

El "golf" de Perl es el pasatiempo de reducir al mínimo el número de caracteres (pulsaciones de teclas) utilizados en un programa Perl, de forma similar a como los golfistas intentan dar el menor número de golpes posible en una ronda. El primer uso de la frase [ 145 ] enfatizó la diferencia entre el código básico destinado a enseñar a un principiante y los trucos concisos que probablemente divirtieran a los programadores Perl experimentados, un ejemplo de estos últimos son los JAPH que ya se utilizaban en firmas en publicaciones de Usenet y otros lugares. Trucos similares habían sido un pasatiempo tácito en el lenguaje APL en décadas anteriores. El uso de Perl para escribir un programa que realizaba cifrado RSA impulsó un interés generalizado y práctico en este pasatiempo. [ 146 ] En años posteriores, el término " golf de código " se ha aplicado al pasatiempo en otros lenguajes. [ 147 ] Un Apocalipsis de Golf de Perl se celebró en la Conferencia Perl 4.0 en Monterey, California, en julio de 2000.

Al igual que con C, las competiciones de código ofuscado eran un pasatiempo muy conocido a finales de la década de 1990. El Concurso de Perl Ofuscado fue una competición organizada por The Perl Journal entre 1996 y 2000 que hacía de la flexibilidad sintáctica de Perl una gran virtud. Se otorgaban premios en categorías como "el más potente" —programas que hacían un uso eficiente del espacio— y "la mejor firma de cuatro líneas" para programas que cabían en cuatro líneas de 76 caracteres al estilo de un bloque de firma de Usenet . [ 148 ]

La poesía en Perl consiste en escribir poemas que pueden compilarse como código Perl válido, como por ejemplo la pieza conocida como " Black Perl ". La poesía en Perl es posible gracias a la gran cantidad de palabras en inglés que se utilizan en el lenguaje Perl. Regularmente se envían nuevos poemas a la comunidad de PerlMonks. [ 149 ]

Otra conferencia más sobre Perl

Yet Another Perl Conference [ 150 ] : 754 [ 151 ] : 14 (también llamada YAPC ), de 2016 a 2019 llamada The Perl Conference ( TPC ), desde 2020 en The Perl and Raku Conference , es una serie de conferencias que discuten el lenguaje de programación Perl , que se ha llevado a cabo desde 1999. Por lo general, se organiza bajo los auspicios de The Perl Foundation y Yet Another Society , una "corporación sin fines de lucro para el avance de los esfuerzos colaborativos en ciencias de la computación e información".

Historia

La primera YAPC se celebró en la Universidad Carnegie Mellon en Pittsburgh, Pensilvania , EE. UU., el 24 y 25 de junio de 1999, [ 150 ] organizada por Kevin Lenzo . [ 152 ] Los orígenes de YAPC se encuentran en el grupo de usuarios sin fines de lucro Perl Mongers. [ 153 ] [ 154 ] La primera conferencia reunió a 31 oradores diferentes en el programa sobre diversos temas relacionados con Perl.

La idea de una conferencia Perl de bajo costo se extendió rápidamente. La primera versión europea de YAPC fue organizada por miembros de Perl Mongers en Londres en 2000, [ 155 ] Israel en 2003, [ 154 ] Australia en 2004, Asia y Brasil en 2005, y Rusia en 2008. Los únicos continentes que nunca han albergado una YAPC son África y la Antártida .

En 2016, YAPC cambió su nombre a The Perl Conference, [ 156 ] : 757 que es el nombre anterior de O'Reilly Open Source Convention (OSCON). A partir de 2020, ahora se llama The Perl and Raku Conference para reflejar el cambio de nombre de Perl 6 a Raku .

Recepción

En 2002, The Perl Developer's Dictionary catalogó a YAPC como la segunda conferencia más importante en la escena Perl, después de la Open Source Conference de O'Reilly . [ 11 ] Minimal Perl describe a YAPC como "una colección de eventos de base de bajo costo que se llevan a cabo en todo el mundo para beneficio de aquellos que no pueden costear el gasto de las conferencias más elaboradas o simplemente prefieren la compañía de estudiantes y geeks a la de los tipos de TI corporativos". [ 157 ] La conferencia se recomienda en varios otros libros sobre programación Perl de la década de 2000. [ 158 ]

La revista holandesa Linux Magazine reseñó la segunda conferencia europea YAPC, celebrada en Ámsterdam en 2001, y describe la consternación que se produjo cuando los organizadores revelaron que habían estado interceptando el tráfico de red y habían descubierto que varios participantes utilizaban contraseñas sin cifrar, a pesar de que el tema de la conferencia era la seguridad. [ 159 ] Otros temas tratados ese año incluyeron la creación de interfaces de usuario, el uso de Perl para el reconocimiento de voz y la programación paralela, y la conferencia contó con tres sesiones paralelas con alrededor de 250 participantes.

El nombre es un homenaje a yacc , " Yet Another Compiler Compiler".

Ubicaciones

América del norte
Europa
Israel
  • 2003: Haifa (11 de mayo de 2003) YAPC::Israel::2003
  • 2004: Herzliya (26 de febrero de 2004) YAPC::Israel::2004
  • 2005: Herzliya (17 de febrero de 2005) YAPC::Israel::2005
  • 2006: Netanya . En 2006, YAPC::Israel se convirtió en OSDC ::Israel. OSDC::Israel 2006
Rusia y Ucrania
  • 2008: Moscú, Rusia (17-18 de mayo de 2008) YAPC::Russia 2008 May Perl Archivado el 25 de septiembre de 2015 en Wayback Machine
  • 2009: Moscú, Rusia (16-17 de mayo de 2009) YAPC::Russia 2009 May Perl 2
  • 2010: Kiev, Ucrania (12-14 de junio de 2010) YAPC::Russia 2010 May Perl + Perl Mova Archivado el 22 de octubre de 2010 en Wayback Machine
  • 2011: Moscú, Rusia (14-15 de mayo de 2011) YAPC::Rusia 2011 Mayo Perl + Perl Mova
  • 2012: Kiev, Ucrania (12-13 de mayo de 2012) YAPC::Russia May Perl
  • No se celebró ningún evento en 2013, debido a que YAPC::Europe 2013 tuvo lugar en Kiev.
  • 2014: San Petersburgo, Rusia (13-14 de junio de 2014) YAPC::Rusia 2014
  • 2015: Moscú, Rusia (16-17 de mayo de 2015) YAPC::Rusia 2015
  • 2017: Moscú, Rusia (4 de noviembre de 2016) YAPC::Rusia 2017
Australia
  • La primera edición de YAPC::Australia se celebró en el marco del OSDC 2004 en Melbourne , del 1 al 5 de diciembre de 2004, y desde entonces se ha celebrado conjuntamente.
Sudamerica

Estos eventos se realizan en colaboración con CONISLI .

  • 2006: Porto Alegre / RS (19 al 22 de abril de 2006) YAPC::SA::2006
  • 2007: Porto Alegre/RS (11 al 14 de abril de 2007) YAPC::SA::2007
  • 2008: Porto Alegre/RS (17 al 19 de abril de 2008) YAPC::SA::2008
  • 2009: Porto Alegre/RS (24 al 27 de junio de 2009) YAPC::SA::2009
Brasil
  • 2005: Porto Alegre/RS (1 al 5 de junio de 2005) YAPC::Brasil 2005
  • 2006: São Paulo /SP, Brasil (3 al 5 de noviembre de 2006) YAPC::Brasil 2006 Archivado el 16 de noviembre de 2006 en Wayback Machine.
  • 2007: São Paulo/SP, Brasil (9 al 11 de noviembre de 2007) YAPC::Brasil 2007
  • 2008: São Paulo/SP, Brasil (18 y 19 de octubre de 2008) YAPC::Brasil 2008
  • 2009: Niterói /RJ, Brasil (30 de octubre – 1 de noviembre de 2009) YAPC::Brasil 2009
  • 2010: Fortaleza /CE, Brasil (25 al 31 de octubre de 2010) YAPC::Brasil 2010 Perl: Solução e Integração de Negócios
  • 2011: Río de Janeiro /RJ, Brasil (4 al 6 de noviembre de 2011) YAPC::Brasil 2011
  • 2012: São Paulo/SP, Brasil (19 y 20 de octubre de 2012) YAPC::Brasil 2012 A revolução dos dados
  • 2013: Curitiba /PR, Brasil (15 y 16 de noviembre de 2013) YAPC::Brasil 2013 Universo Científico e Perl Hacking
  • 2014: Itapema /SC, Brasil (19 y 20 de septiembre de 2014) YAPC::Brasil 2014 Soluções Tecnológicas para Gestão Pública
  • 2015: Taubaté /SP, Brasil (18 al 20 de septiembre de 2015) YAPC::Brasil 2015 Perl Community y CPAN
Asia
  • 2004: Taipéi , Taiwán (27-28 de marzo de 2004) YAPC::2004::Taipei Archivado el 24 de septiembre de 2015 en Wayback Machine
  • 2005: Taipéi, Taiwán (26-27 de marzo de 2005) (conservado como YAPC::Taipei) YAPC::2005::Taipei Archivado el 24 de septiembre de 2015 en Wayback Machine
  • 2006: Tokio, Japón (29-30 de marzo de 2006) YAPC::Asia 2006
  • 2007: Tokio, Japón (4-5 de abril de 2007) YAPC::Asia 2007
  • 2008: Tokio, Japón (15-16 de mayo de 2008) YAPC::Asia 2008
  • 2009: Tokio, Japón (10-11 de septiembre de 2009) YAPC::Asia 2009
  • 2010: Tokio, Japón (15-16 de octubre de 2010) YAPC::Asia 2010
  • 2011: Tokio, Japón (14-15 de octubre de 2011) YAPC::Asia 2011
  • 2012: Tokio, Japón (27-29 de septiembre de 2012) YAPC::Asia 2012
  • 2013: Tokio, Japón (19-21 de septiembre de 2013) YAPC::Asia 2013
  • 2014: Tokio, Japón (28-30 de agosto de 2014) YAPC::Asia 2014
  • 2015: Tokio, Japón (20-22 de agosto de 2015) YAPC::Asia 2015
  • 2016: Hokkaido, Japón (9-10 de diciembre de 2016) YAPC::Hokkaido
  • 2017: Kansai (3-4 de marzo de 2017) YAPC::Kansai 2017
  • 2017: Fukuoka (30 de junio – 1 de julio) YAPC::Fukuoka 2017
  • 2018: Okinawa (2-3 de marzo de 2018) YAPC::Okinawa 2018
  • 2019: Tokio, Japón (25-26 de enero de 2019) YAPC::Tokio 2019
  • 2020: Kioto, Japón (27-28 de marzo de 2020) YAPC::Kyoto 2020
  • 2021: En línea, YAPC::Japón (18-19 de febrero de 2021) YAPC::Japón 2021
  • 2022: En línea, YAPC::Japón (4-5 de marzo de 2022) YAPC::Japón 2022
  • 2022: Kioto, Japón (19 de marzo de 2023) YAPC::Kyoto 2023
  • 2024: Hiroshima, Japón (10 de febrero de 2024) YAPC::Hiroshima 2024
  • 2024: Hakodate, Japón (5 de octubre de 2024) YAPC::Hakodate 2024
  • 2025: Fukuoka, Japón (14 y 15 de noviembre de 2025) YAPC::Fukuoka 2025

Véase también

Referencias

  1. 1 2 3 Ashton, Elaine (1999). "La cronología de Perl y su cultura (v3.0_0505)" . Archivado del original el 11 de enero de 2013. Recuperado el 12 de marzo de 2004 .
  2. "¡Perl v5.44.0 ya está disponible!" . www.nntp.perl.org . Consultado el 23 de julio de 2026 .
  3. "Anuncio de lanzamiento de perl v5.45.1" . www.nntp.perl.org . Consultado el 23 de julio de 2026 .
  4. 1 2 "La "Licencia Artística" - dev.perl.org" . dev.perl.org . Archivado del original el 24 de julio de 2018. Recuperado el 24 de junio de 2016 .
  5. 1 2 Artístico Archivado el 25 de julio de 2018 en Wayback Machine - archivo en el repositorio git de Perl 5
  6. 1 2 "Licencias de Perl" . dev.perl.org. Archivado del original el 22 de enero de 2011. Recuperado el 8 de enero de 2011 .
  7. Wall, Larry (12 de diciembre de 2007). "Programar es difícil, ¡vamos a usar scripts!" Archivado del original el 28 de julio de 2017. Recuperado el 14 de abril de 2019. Todos los diseñadores de lenguajes tienen sus peculiaridades ocasionales. Simplemente, yo soy mejor que la mayoría.
  8. Lapworth, Leo. "Preguntas generales sobre Perl" . Preguntas frecuentes sobre Perl . Perl.org. Archivado del original el 28 de mayo de 2013. Recuperado el 24 de febrero de 2012 .
  9. "perl(1): Lenguaje práctico de extracción/generación de informes - Página man de Linux" . Linux.die.net. Archivado del original el 3 de junio de 2013. Recuperado el 23 de julio de 2013 .
  10. Sheppard, Doug (16 de octubre de 2000). "Introducción a Perl para principiantes" . dev.perl.org. Archivado del original el 5 de junio de 2011. Recuperado el 8 de enero de 2011 .
  11. 1 2 3 "Larry Wall, el gurú de Perl" . Linux Journal . Consultado el 30 de agosto de 2023 .
  12. "Acerca de Perl" . perl.org. Archivado del original el 6 de noviembre de 2015. Consultado el 20 de abril de 2013 .Perl es una familia de lenguajes de programación. Perl 6 forma parte de ella, pero es un lenguaje independiente con su propio equipo de desarrollo. Su existencia no afecta significativamente al desarrollo continuo de Perl 5.
  13. "Camino a Raku" . GitHub. Archivado del original el 12 de noviembre de 2020. Recuperado el 14 de enero de 2021. Este documento describe los pasos a seguir para cambiar el nombre de Perl 6 a Raku .
  14. 1 2 3 4 Wall, Larry ; Christiansen, Tom; Orwant, Jon (julio de 2000). Programación en Perl, tercera edición . O'Reilly Media . ISBN 978-0-596-00027-1.
  15. "Cómo se miden los programas" . Computer Language Benchmarks Game, Debian.net . Archivado del original el 12 de julio de 2020. Consultado el 5 de octubre de 2020 .
  16. "RSA en 3 líneas de perl - Everything2.com" . everything2.com . 26 de noviembre de 2000. Archivado del original el 8 de octubre de 2020. Consultado el 5 de octubre de 2020 .
  17. "Evaluaciones de lenguaje" . Archivado del original el 10 de marzo de 2015. Recuperado el 30 de enero de 2015. El punto fuerte de Perl son sus herramientas integradas extremadamente potentes para el procesamiento dirigido por patrones de formatos de datos textuales orientados a líneas; en esto no tiene rival.
  18. "¿Usaste Perl para escribir QUÉ?!" . 24 de enero de 2008. Archivado del original el 4 de febrero de 2015. Recuperado el 4 de febrero de 2015. Perl siempre ha sido el lenguaje de referencia para cualquier tarea que implique la coincidencia de patrones en la entrada .
  19. "La importancia de Perl" . Archivado del original el 2 de febrero de 2015. Consultado el 4 de febrero de 2015. La incomparable capacidad de Perl para procesar texto...
  20. Smith, Roderick W. (21 de junio de 2002). Redes avanzadas en Linux . Addison-Wesley Professional. pág . 594. ISBN  978-0-201-77423-8.
  21. Sheppard, Doug (16 de octubre de 2000). "Introducción a Perl para principiantes" . O'Reilly Media . Archivado del original el 4 de junio de 2008. Recuperado el 27 de julio de 2008 .
  22. Leonard, Andrew. "El placer de Perl" . Salon.com . Archivado del original el 6 de julio de 2012. Consultado el 5 de junio de 2012 .
  23. "Scripting on the Lido Deck" . Wired . 7 de marzo de 2016. Archivado del original el 7 de marzo de 2016. Consultado el 14 de febrero de 2023 .
  24. Richardson, Marjorie (1 de mayo de 1999). "Larry Wall, el gurú de Perl" . Linux Journal . Archivado del original el 20 de julio de 2013. Recuperado el 3 de enero de 2011 .
  25. Schwartz, Randal ; foy, brian ; Phoenix, Tom (16 de junio de 2011). Aprendiendo Perl . O'Reilly Media, Inc. pág . 4. ISBN  978-1449313142A Perl se le conoce a veces como el "Lenguaje Práctico de Extracción e Informes", aunque también se le ha llamado "Listador de Basura Patológicamente Ecléctico", entre otras expansiones. En realidad, es un acrónimo inverso, no un acrónimo, ya que Larry Wall, el creador de Perl, ideó primero el nombre y luego la expansión. Por eso "Perl" no está en mayúsculas. No tiene sentido discutir sobre cuál expansión es la correcta: Larry aprueba ambas.
  26. Wall, Larry . "perl - El intérprete del lenguaje Perl" . Documentación de Perl 5 versión 12.2 . Archivado del original el 1 de julio de 2013. Recuperado el 26 de enero de 2011 .
  27. 1 2 Schwartz, Randal L .; Phoenix, Tom; Foy, Brian (6 de diciembre de 2007). Aprendiendo Perl, Tercera edición . O'Reilly Media. ISBN 978-0-596-00132-2.
  28. 1 2 "Información sobre el uso y la marca registrada de The Perl Camel" . O'Reilly Media . Archivado del original el 25 de abril de 2018. Recuperado el 9 de enero de 2011 .
  29. "Marca registrada Perl" . La Fundación Perl . Archivado del original el 3 de mayo de 2011. Consultado el 9 de enero de 2011 .
  30. Gillmore, Dan (25 de octubre de 1998). "República de Perl" . Chicago Tribune . Archivado del original el 30 de abril de 2011. Recuperado el 10 de enero de 2011 .
  31. "Un nuevo logotipo para Perl" . Calendario de Adviento de Perl 2024. Consultado el 9 de mayo de 2025 .
  32. 1 2 3 Kalita, Jugal (diciembre de 2003). Sobre Perl: Perl para estudiantes y profesionales . Universal-Publishers. ISBN 978-1-58112-550-4.
  33. "Cultura Perl" . docstore.mik.ua . Consultado el 16 de marzo de 2023 .
  34. Holloway, Ruth. "Perl cumple 30 años y su comunidad sigue prosperando" . Opensource.com . Consultado el 23 de junio de 2023 .
  35. Programación en Perl, 3.ª edición [ Libro ] . ISBN 978-0-596-00027-1. Consultado el 11 de abril de 2023 .{{cite book}}: |website=ignorado ( ayuda )
  36. "perlhist - el historial de registros de Perl - Navegador Perldoc" . perldoc.perl.org . Consultado el 28 de julio de 2023 .
  37. "perl.perl5.porters archive" . perl.org. Archivado del original el 1 de mayo de 2011. Consultado el 13 de enero de 2011 .
  38. 1 2 "perlhist: los registros históricos de Perl" . Documentación de Perl 5 versión 12.2 . perldoc.perl.org. Archivado del original el 13 de enero de 2011. Recuperado el 21 de enero de 2011 .
  39. "Perl: Definición, historia y datos" . Britannica.com . Consultado el 15 de junio de 2022 .
  40. "CPAN" . CPAN . Archivado del original el 3 de octubre de 2019. Consultado el 19 de diciembre de 2022 .
  41. 1 2 "perl5004delta – novedades de perl5.004" . Documentación de Perl 5 versión 12.2 . perldoc.perl.org. Archivado del original el 27 de febrero de 2011. Consultado el 8 de enero de 2011 .
  42. Patwardhan, Nathan; Siever, Ellen; Spainhour, Stephen (2002). Perl en pocas palabras, Segunda edición . O'Reilly Media . ISBN 978-0-596-00241-1.
  43. "perl5005delta - novedades de perl5.005" . Documentación de Perl 5 versión 12.2 . perldoc.perl.org. Archivado del original el 3 de febrero de 2011. Consultado el 21 de enero de 2011 .
  44. "Código fuente de Perl" . cpan.org . Consultado el 26 de noviembre de 2023 .
  45. "perl56delta - novedades de perl v5.6.0" . Documentación de Perl 5 versión 12.2 . perldoc.perl.org. Archivado del original el 2 de febrero de 2011. Consultado el 21 de enero de 2011 .
  46. "perl56delta - novedades de perl v5.6.x" . Documentación de Perl 5 versión 12.2 . perldoc.perl.org. Archivado del original el 18 de noviembre de 2010. Consultado el 21 de enero de 2011 .
  47. "Perl | Definición, historia y datos | Britannica" . www.britannica.com . Consultado el 15 de junio de 2022 .
  48. Wall, Larry. "Apocalipsis 1: Lo feo, lo malo y lo bueno" . Archivado del original el 23 de noviembre de 2010. Consultado el 8 de enero de 2011 .
  49. "perl58delta - novedades de perl v5.8.0" . Documentación de Perl 5 versión 12.2 . perldoc.perl.org. Archivado del original el 21 de noviembre de 2010. Consultado el 21 de enero de 2011 .
  50. "Un plan para carlinos" . O'Reilly Media . 3 de marzo de 2005. Consultado el 27 de enero de 2011 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  51. Tang, Audrey (21 de abril de 2010). "Re: Cómo implementar Perl 6 en diez años" . PerlMonks. Archivado del original el 11 de mayo de 2011. Recuperado el 3 de enero de 2011 .
  52. Broadwell, Geoff (8 de agosto de 2005), OSCON 4.4: Inside Ponie, the Bridge from Perl 5 to Perl 6 , O'Reilly ONLamp Blog, archivado del original el 14 de marzo de 2012 , consultado el 27 de junio de 2016.
  53. Vincent, Jesse (23 de agosto de 2006), Ponie ha sido retirado del pastoreo , The Perl Foundation, archivado del original el 27 de junio de 2009 , recuperado el 15 de enero de 2019.
  54. "perl5100delta - novedades de perl 5.10.0" . Documentación de Perl 5 versión 12.2 . perldoc.perl.org. Archivado del original el 21 de diciembre de 2010. Consultado el 8 de enero de 2011 .
  55. "perlsyn - Sintaxis de Perl" . Documentación de Perl 5 versión 12.2 . perldoc.perl.org. Archivado del original el 26 de agosto de 2013. Recuperado el 21 de enero de 2011 .
  56. "perl5120delta - novedades de perl v5.12.0" . Documentación de Perl 5 versión 12.2 . perldoc.perl.org. Archivado del original el 4 de enero de 2011. Consultado el 8 de enero de 2011 .
  57. "perl5140delta - novedades de perl v5.14.0 - metacpan.org" . metacpan.org . Archivado del original el 25 de julio de 2018. Consultado el 22 de julio de 2017 .
  58. 1 2 "perl5160delta - qué hay de nuevo en perl v5.16.0" . perldoc.perl.org . Consultado el 21 de mayo de 2012 .
  59. "perl5180delta - Novedades de Perl v5.18.0 - Lenguaje de programación Perl" . Documentación de Perl 5 versión 18.0 . metacpan.org. Archivado del original el 29 de octubre de 2013. Consultado el 27 de octubre de 2013 .
  60. "perl5200delta - Novedades de Perl v5.20.0 - Lenguaje de programación Perl" . Documentación de Perl 5 versión 20.0 . metacpan.org . Consultado el 27 de mayo de 2014 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  61. Hitos en el Renacimiento de Perl – Programación moderna en Perl. Archivado el 27 de octubre de 2012 en Wayback Machine . Modernperlbooks.com. Consultado el 17 de julio de 2013.
  62. Prefacio (Modern Perl 2011-2012) Archivado el 28 de septiembre de 2012 en Wayback Machine . Modernperlbooks.com. Consultado el 17 de julio de 2013.
  63. Edición Modern Perl 2011-2012 de chromatic | Onyx Neon Press. Archivado el 22 de diciembre de 2011 en Wayback Machine . Onyxneon.com. Consultado el 17 de julio de 2013.
  64. "Perl Iluminado" . Perl Iluminado . Archivado del original el 5 de febrero de 2014. Recuperado el 28 de septiembre de 2012 .
  65. "YAPC::NA 2013 – 3–5 de junio, Austin, Texas" . Yapcna.org. 4 de junio de 2013. Archivado del original el 22 de junio de 2013. Consultado el 11 de abril de 2014 .
  66. Little, Stevan (8 de febrero de 2013). "¿Qué es Moe (una aclaración) | Stevan Little?" . Blogs.perl.org. Archivado del original el 19 de diciembre de 2013. Recuperado el 11 de abril de 2014 .
  67. "p2 en poción" . Perl11.org. 7 de febrero de 2004. Archivado del original el 24 de septiembre de 2013. Recuperado el 11 de abril de 2014 .
  68. "goccy/gperl 路 GitHub" . GitHub.com. Archivado del original el 23 de febrero de 2015. Recuperado el 11 de abril de 2014 .
  69. "rperl" . RPerl.org. Archivado del original el 18 de octubre de 2014. Consultado el 11 de agosto de 2014 .
  70. "Perl 6" . El proyecto Perl 6. Archivado del original el 21 de febrero de 2011. Recuperado el 27 de febrero de 2011 .
  71. Torkington, Nathan. "Transcripción de la charla de Larry" . nntp.perl.org. Archivado del original el 1 de mayo de 2011. Recuperado el 25 de enero de 2011 .
  72. "Perl6 - El futuro de Perl" . www.java-samples.com . Consultado el 18 de mayo de 2021 .
  73. "Documentación oficial de Perl 6" . El proyecto Perl 6. Archivado del original el 31 de agosto de 2009. Consultado el 25 de enero de 2011 .
  74. Kuhn, Bradley M. (enero de 2001). Consideraciones sobre la migración de Perl a la máquina virtual Java (tesis de maestría). Universidad de Cincinnati. Archivado del original el 21 de marzo de 2008. Recuperado el 28 de junio de 2008 .
  75. cromático (2015). Modern Perl . Pragmatic Bookshelf. ISBN 978-1-68050-088-2.
  76. "Comparación de características de los compiladores de Perl 6" . Archivado del original el 11 de agosto de 2017. Recuperado el 28 de marzo de 2012 .
  77. Worthington, Jonathan (15 de julio de 2013). "Noticias de Rakudo JVM: Más pruebas, además de prototipos de Thread y Promise" . 6guts . Archivado del original el 5 de octubre de 2013. Recuperado el 24 de julio de 2013 .
  78. Worthington, Jonathan (31 de mayo de 2013). "MoarVM: Una máquina virtual para NQP y Rakudo" . 6guts . Archivado del original el 9 de julio de 2013. Recuperado el 24 de julio de 2013 .
  79. "rename-lwn" . Archivado del original el 17 de octubre de 2019. Recuperado el 10 de noviembre de 2019 .
  80. "rakudo/rakudo - GitHub" . GitHub.com. Archivado del original el 29 de julio de 2017. Consultado el 21 de septiembre de 2013 .
  81. 1 2 "Perl 7 anunciado en la Perl Conference in the Cloud" . perlfoundation.org. 24 de junio de 2020. Archivado del original el 26 de junio de 2020. Recuperado el 24 de junio de 2020 .
  82. 1 2 "Anuncio de Perl 7" . perl.com. 24 de junio de 2020. Archivado del original el 24 de junio de 2020. Recuperado el 24 de junio de 2020 .
  83. Clark, Nicholas (9 de mayo de 2021). "Reunión del Consejo Directivo n.° 019 6 de mayo de 2021" . www.nntp.perl.org . Archivado del original el 18 de mayo de 2021. Recuperado el 17 de mayo de 2021. El plan sigue siendo que habrá una actualización a Perl 7, pero no inmediatamente después del lanzamiento de la versión 5.34.0. ... No creemos que podamos entregar [Perl 7] en 12 meses. 
  84. Preparación para Perl 7d . leanpub.com. 24 de junio de 2020. Archivado del original el 25 de junio de 2020. Consultado el 24 de junio de 2020 .
  85. Consejo Directivo de Perl. "¿Qué pasó con Perl 7?" . blogs.perl.org . Consultado el 7 de julio de 2022 .
  86. Richardson, Marjorie. "Larry Wall, el gurú de Perl | Linux Journal" . www.linuxjournal.com . Linux Journal . Consultado el 16 de enero de 2023 .
  87. Schwartz, Alan (diciembre de 1998). "Tutorial: Perl, un lenguaje de reformateo psicológicamente eficiente" . Behavior Research Methods, Instruments, & Computers . 30 (4): 605– 609. doi : 10.3758/BF03209477 . ISSN 0743-3808 . S2CID 61028367 .  
  88. Gilbert, James GR (marzo de 2002). "Cómo convertirse en un renacuajo de la programación" . Nature Biotechnology . 20 (3): 221. doi : 10.1038/nbt0302-221 . ISSN 1087-0156 . S2CID 38728402 .  
  89. Myhrvold, Conor (13 de febrero de 2014). "La caída de Perl, el lenguaje más prometedor de la web" . FastCompany .
  90. Wall, Larry. "perl - El intérprete del lenguaje Perl 5 - Navegador Perldoc" . perldoc.perl.org . Consultado el 24 de junio de 2021 .
  91. Wall, Larry (1 de marzo de 1997). "¿Por qué eres tú?" . Linux Journal . Archivado del original el 9 de diciembre de 2010. Recuperado el 13 de marzo de 2011 .
  92. "perlfunc - Funciones integradas de Perl" . Documentación de Perl 5 versión 12.2 . perldoc.perl.org. Archivado del original el 6 de enero de 2011. Consultado el 10 de enero de 2011 .
  93. Nagpal, DP (2010). Tecnología de diseño web . India: S. Chand. pág. 700. ISBN  978-8121927635.
  94. "título desconocido". 10 de mayo de 1997. Usenet: 199705101952.MAA00756@wall.org . 
  95. "Actualización para desarrolladores". Actualización para desarrolladores del Dr. Dobb . 2. Miller-Freeman: 15. 1995.
  96. 1 2 Schwartz, Randal L. (1993). Aprendiendo Perl . O'Reilly & Associates. Bibcode : 1993lepe.book.....S .
  97. "perlintro" . Documentación de Perl 5 versión 18.0 . Porters de Perl 5 y perldoc.perl.org. Archivado del original el 9 de enero de 2011. Recuperado el 30 de junio de 2013 .
  98. "perlstyle" . Documentación de Perl 5 versión 18.0 . Porters de Perl 5 y perldoc.perl.org. Archivado del original el 26 de junio de 2013. Recuperado el 30 de junio de 2013 .
  99. 1 2 "Preguntas frecuentes sobre Perl 6" . Proyecto Perl 6. Archivado del original el 1 de julio de 2013. Recuperado el 30 de junio de 2013 .
  100. 1 2 cromático (31 de diciembre de 2012). "La implementación de Perl 5 frente a Perl 6" . Archivado del original el 29 de julio de 2013. Recuperado el 30 de junio de 2013 .
  101. "Especificación de Perl 6" . El proyecto Perl 6. Archivado del original el 2 de diciembre de 2009. Consultado el 27 de enero de 2011 .
  102. "Compiladores de Perl 6" . El proyecto Perl 6. Archivado del original el 2 de diciembre de 2009. Consultado el 27 de enero de 2011 .
  103. En el libro Programming Perl , 3.ª edición, capítulo 18,se puede encontrar una descripción del intérprete de Perl 5. Véase, en particular, la página 467, donde se distinguen claramente la fase de ejecución y la fase de compilación, así como el tiempo de ejecución y el tiempo de compilación . En Perl, los términos "tiempo" y "fase" suelen confundirse.
  104. Abuin, Jose M.; Pichel, Juan C.; Pena, Tomas F.; Gamallo, Pablo; Garcia, Marcos (2014). "Perldoop: Ejecución eficiente de scripts Perl en clústeres Hadoop". 2014 IEEE International Conference on Big Data (Big Data) . IEEE. pp. 766–771 . doi : 10.1109/BigData.2014.7004303 . ISBN  978-1-4799-5666-1.
  105. "perlguts - Introducción a la API de Perl - Navegador de Perldoc" . perldoc.perl.org . Consultado el 24 de enero de 2022 .
  106. Schwartz, Randal . "Sobre el análisis sintáctico de Perl" . Archivado del original el 27 de septiembre de 2007. Recuperado el 3 de enero de 2007 .
  107. Abuin, Jose M.; Pichel, Juan C.; Pena, Tomas F.; Gamallo, Pablo; Garcia, Marcos (2014). "Perldoop: Ejecución eficiente de scripts Perl en clústeres Hadoop". 2014 IEEE International Conference on Big Data (Big Data) . IEEE. pp. 766–771 . doi : 10.1109/BigData.2014.7004303 . ISBN  978-1-4799-5666-1.
  108. "The Perl Journal #19/9.26" (PDF) . O'Reilly Media . Archivado del original (PDF) el 27 de febrero de 2020. Consultado el 4 de febrero de 2011 .
  109. Kegler, Jeffrey (7 de octubre de 2011). "Perl y análisis sintáctico 11: ¿Son analizables todos los programas Perl?" . Recuperado el 25 de octubre de 2022. ... parece que no estamos renunciando a absolutamente nada. Nadie ha podido demostrar jamás una desventaja práctica.
  110. Kennedy, Adam (2006). "PPI—Parse, Analyze and Manipulate Perl (without perl)" . CPAN . Archivado del original el 3 de septiembre de 2013. Recuperado el 16 de septiembre de 2013 .
  111. "Teorema de Rice". The Perl Review . 4 (3): 23– 29. Verano de 2008.y "Perl es indecidible". The Perl Review . 5 : 7–11 . Otoño de 2008., disponible en línea en Kegler, Jeffrey. "Perl y la indecidibilidad" . Archivado del original el 17 de agosto de 2009. Recuperado el 4 de enero de 2009 .
  112. Hietaniemi, Jarkko (1998). "Perl Ports (Binary Distributions)" . CPAN.org. Archivado del original el 18 de abril de 2006. Recuperado el 16 de abril de 2006 .
  113. "The MacPerl Pages" . Prime Time Freeware. 1997. Archivado del original el 18 de enero de 2006. Recuperado el 18 de enero de 2006 .
  114. "Perl Ports (Binary Distributions)" . CPAN . Archivado del original el 18 de abril de 2006. Consultado el 27 de enero de 2011 .
  115. "ActivePerl es Perl para Windows, Mac, Linux, AIX, HP-UX y Solaris" . ActiveState Software. Archivado del original el 31 de marzo de 2016. Consultado el 9 de enero de 2011 .
  116. "Uso de PPM" . ActiveState Software . Archivado del original el 27 de agosto de 2010. Consultado el 9 de enero de 2011 .
  117. Crane, Dana (23 de julio de 2019). "Adiós PPM, hola State Tool" . Activestate.com . Archivado del original el 28 de julio de 2020. Recuperado el 16 de abril de 2020 .
  118. "Alioth: El juego de evaluación comparativa de lenguajes informáticos: Información del proyecto" . Alioth . Archivado del original el 25 de marzo de 2013. Recuperado el 13 de enero de 2011 .
  119. "¿Qué programas son los más rápidos?" . Juego de evaluación comparativa de lenguajes informáticos . Alioth . Archivado del original el 17 de mayo de 2013 . Recuperado el 13 de enero de 2011 .
  120. Leroy, Jean-Louis (1 de diciembre de 2005). "Un comienzo oportuno" . O'Reilly. Archivado del original el 13 de junio de 2006. Recuperado el 22 de mayo de 2006 .
  121. Beattie, Malcolm y Enache Adrian (2003). "B::Bytecode Perl compiler's bytecode backend" . CPAN . Archivado del original el 30 de marzo de 2021. Recuperado el 16 de septiembre de 2013 .
  122. Schwartz, Randal; foy, brian; Phoenix, Tom (23 de junio de 2011). Aprendiendo Perl . O'Reilly Media, Inc. ISBN 978-1-4493-0358-7.
  123. Stein, Lincoln; MacEachern, Doug (1999). Writing Apache Modules with Perl and C: The Apache API and Mod_perl . O'Reilly Media, Inc. ISBN 978-1-56592-567-0.
  124. Bekman, Stas; Cholet, Eric (2003). Practical Mod_perl . O'Reilly Media, Inc. ISBN 978-0-596-00227-5.
  125. Ingerson, Brian. "Inline - metacpan.org" . CPAN . Archivado del original el 13 de junio de 2013. Recuperado el 26 de enero de 2011 .
  126. Gilmore, WJ (2010). Introducción a PHP y MySQL: De principiante a profesional, cuarta edición . Apress. pág . 484. ISBN  978-1-4302-3114-1.
  127. "IMDb Helpdesk: ¿Qué software/hardware utiliza para ejecutar el sitio?" . Internet Movie Database . Archivado del original el 9 de marzo de 2017 . Recuperado el 12 de febrero de 2011 .
  128. DuckDuckGo gestiona una gran cantidad de consultas de búsqueda: 4,5 millones al día. https://duckduckgo.com/traffic.html Archivado el 15 de febrero de 2012 en los Archivos Web de la Biblioteca del Congreso .
  129. DuckDuckGo utiliza Perl https://web.archive.org/web/20101231135106/http://www.gabrielweinberg.com/blog/2009/03/duck-duck-go-architecture.html
  130. "Preguntas frecuentes sobre Perl" . Archivado del original el 6 de agosto de 2019. Consultado el 6 de agosto de 2019. Perl se usa ampliamente en Debian . No solo algunas funciones principales están escritas en Perl, sino que hay más de 700 paquetes en la rama inestable que tienen "perl" en su nombre (marzo de 2004).
  131. "Libros de Perl - Libro: Manipulación de datos con Perl" . Perl.org . Archivado del original el 7 de septiembre de 2011. Consultado el 30 de diciembre de 2010 .
  132. "perlport - Escritura de Perl portátil - Navegador Perldoc" . perldoc.perl.org . Consultado el 29 de mayo de 2026 .
  133. Descartes, Alligator; Bunce, Tim (2000). Programming the Perl DBI : [ programación de bases de datos con Perl ] (1.ª ed.). Pekín [ua]: O'Reilly. ISBN   978-1-56592-699-8.
  134. "Programación en Perl: Principios de los lenguajes de programación" . sites.google.com . Archivado del original el 8 de octubre de 2020. Consultado el 18 de mayo de 2021 .
  135. Bunce, Tim; Descartes, Alligator (4 de febrero de 2000). Programación de la base de datos Perl DBI: Programación de bases de datos con Perl . O'Reilly Media, Inc. ISBN 978-1-4493-1536-8.
  136. Bekman, Stas. "Trabajo eficiente con bases de datos bajo mod_perl" . Archivado del original el 22 de agosto de 2007. Recuperado el 1 de septiembre de 2007 .
  137. Pachev, Sasha (10 de abril de 2007). Entendiendo los aspectos internos de MySQL: Descubriendo y mejorando una gran base de datos . O'Reilly Media, Inc. ISBN 978-0-596-55280-0.
  138. "Class::DBI - Simple Database Abstraction - metacpan.org" . metacpan.org . Archivado del original el 6 de agosto de 2020. Consultado el 8 de abril de 2020 .
  139. "Rose::DB::Object - Mapeador objeto-relacional (ORM) extensible y de alto rendimiento. - metacpan.org" . metacpan.org . Archivado del original el 6 de agosto de 2020. Consultado el 8 de abril de 2020 .
  140. "Referencia para desarrolladores sobre consultas T-SQL" . pdfpremiumfree.com . Consultado el 18 de mayo de 2021 .
  141. Wall, Larry (22 de mayo de 2014). "Cultura Perl (también conocida como el primer Estado de la Cebolla)" . Archivado del original el 22 de mayo de 2014. Recuperado el 22 de mayo de 2014 .
  142. Wall, Larry . "2nd State of the Onion" . Archivado del original el 17 de julio de 2012. Recuperado el 12 de octubre de 2012 .(Buscar 'iglesia')
  143. Schwartz, Randal L. (2 de mayo de 1999). "¿Quién es simplemente otro hacker de Perl?" . Grupo de noticias : comp.lang.perl.misc . Usenet: m1hfpvh2jq.fsf@halfdome.holdit.com . Consultado el 5 de diciembre de 2014 .  {{cite newsgroup}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  144. Schwartz, Randal (31 de marzo de 2005). "JAPH canónico" . PerlMonks. Archivado del original el 22 de julio de 2011. Recuperado el 16 de mayo de 2011 .
  145. Bacon, Greg (28 de mayo de 1999). "Re: Incrementar un valor en una porción" . Grupo de noticias : comp.lang.perl.misc . Usenet: 7imnti$mjh$1@info2.uah.edu . Archivado del original el 7 de julio de 2011. Recuperado el 12 de julio de 2011 .  
  146. Volver, Adam. "RSA en 5 líneas de perl" . Archivado del original el 19 de enero de 2011. Recuperado el 10 de enero de 2011 .
  147. "Code Golf: ¿Qué es Code Golf?" . 29degrees. 2007. Archivado del original el 13 de enero de 2012. Consultado el 26 de noviembre de 2018 .
  148. Gallo, Felix (2003). "The Zeroth Offuscated Perl Contest" (PDF) . En Jon Orwant (ed.). Games, diversions, and Perl culture: best of the Perl journal . O'Reilly Media. Archivado del original (PDF) el 22 de noviembre de 2009. Recuperado el 12 de enero de 2011 .
  149. "Poesía en Perl" . PerlMonks. Archivado del original el 27 de septiembre de 2007. Consultado el 27 de enero de 2011 .
  150. 1 2 Christiansen, Tom; d foy, brian; Wall, Larry; Orwant, Jon (2012). Programación en Perl: Un poder inigualable para el procesamiento de texto y la creación de scripts . O'Reilly Media, Inc. ISBN 978-1-4493-2146-8. Consultado el 21 de diciembre de 2025 .
  151. Arlow, Jim (2003). Patrones empresariales y MDA: Creación de mejor software con patrones arquetípicos y UML . Addison-Wesley Professional. ISBN 978-0-1327-0253-9. Consultado el 21 de diciembre de 2025 .
  152. Christiansen, Tom; foy, brian d; Wall, Larry; Orwant, Jon (17 de febrero de 2012). Programación en Perl: Un poder inigualable para el procesamiento de texto y la creación de scripts . O'Reilly Media, Inc. pág. 754. ISBN  978-1-4493-2146-8.
  153. Pierce, Clinton (2002). Diccionario del desarrollador de Perl . Internet Archive. Indianápolis, Indiana : Sams. págs. 13-14 . ISBN   978-0-672-32067-5.
  154. 1 2 Scott, Peter (2004). Perl Medic [ recurso electrónico ] : Transformando código heredado . Internet Archive. Boston : Addison Wesley Professional. págs. 287–288 . ISBN    978-0-201-79526-4.{{cite book}}: CS1 mantenimiento: ubicación del editor ( enlace )
  155. Christiansen, Tom; foy, brian d; Wall, Larry; Orwant, Jon (17 de febrero de 2012). Programación en Perl: Un poder inigualable para el procesamiento de texto y la creación de scripts . O'Reilly Media, Inc. pág. 754. ISBN  978-1-4493-2146-8.
  156. Christiansen, Tom (2012). Programación en Perl: Un poder inigualable para el procesamiento de texto y la creación de scripts . O'Reilly Media, Inc. ISBN 978-1-4493-2146-8. Consultado el 21 de diciembre de 2025 .
  157. Maher, Tim (2007). Minimal Perl : for UNIX and Linux people . Internet Archive. Greenwich, Conn.: Manning. p. 440. ISBN    978-1-932394-50-4.
  158. Mark LeBlanc (2007). Perl para explorar el ADN . Archivo de Internet. Oxford University Press. pág. 292. ISBN  978-0-19-530589-0.
  159. ^ Hemel , Armijn (septiembre de 2001). "Linux Samenscholing: YAPC :: Europa 2.0.01" . Revista Linux . 2 (5): 56.
  160. "Actas / YAPC::Europe 2012 : [ Decimocuarta Conferencia Europea de Perl ; Frankfurt, 20-22 de agosto de 2012 ] | WorldCat.org" . search.worldcat.org . Consultado el 23 de diciembre de 2025 .  

Lecturas adicionales

  • Aprendiendo Perl, 6.ª edición (2011), O'Reilly. Introducción a Perl para principiantes.
  • Introducción a Perl, 1.ª edición (2012), Wrox. Un tutorial para principiantes, dirigido a quienes se inician en la programación o en Perl.
  • Modern Perl fue archivado el 22 de diciembre de 2011 en Wayback Machine . Segunda edición (2012), Onyx Neon. Describe técnicas de programación en Modern Perl.
  • Programación en Perl, 4.ª edición (2012), O'Reilly. La referencia definitiva sobre Perl.
  • Programación eficaz en Perl, 2.ª edición (2010), Addison-Wesley. Guía de nivel intermedio a avanzado para escribir código Perl idiomático.
  • Libro de recetas de Perl , ISBN 0-596-00313-7Ejemplos prácticos de programación en Perl.
  • Dominus, Mark Jason (2005). Higher Order Perl . Morgan Kaufmann. ISBN 978-1-55860-701-9.Técnicas de programación funcional en Perl.
  • Sitio web oficialEdita esto en Wikidata