stringtranslate.com

perla

Perl es un lenguaje de programación dinámico , interpretado , de alto nivel y de propósito general . Aunque Perl no es oficialmente un acrónimo, [9] se utilizan varios retrorónimos , incluido "Lenguaje práctico de extracción e informes". [10]

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

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

Perl ganó gran popularidad a mediados de la década de 1990 como lenguaje de programación CGI , en parte debido a sus poderosas capacidades de expresión regular y análisis de cadenas . [19] [20] [21] [22] Además de CGI, Perl 5 se utiliza para administración de sistemas , programación de redes , finanzas, bioinformática y otras aplicaciones, como GUI . Se le ha apodado "la motosierra de los lenguajes de programación del ejército suizo" debido a su flexibilidad y potencia. [23] En 1998, también se la conoció como la " cinta adhesiva que mantiene unida a Internet ", en referencia tanto a su uso ubicuo como lenguaje adhesivo como a su percibida falta de elegancia. [24]

Nombre y logotipos

Perl originalmente se llamaba "Perla". Wall quería darle al idioma un nombre corto con connotaciones positivas. También es una referencia cristiana a la parábola de la perla del Evangelio de Mateo. [11] [25] Sin embargo, Wall descubrió el lenguaje de programación PEARL existente antes del lanzamiento oficial de Perl y cambió la ortografía del nombre y eliminó la "a" del nombre. [26] [11]

El nombre se expande ocasionalmente como un backronym : Practical Extraction and Report Language [27] y el propio Pathologically Eclectic Rubbish Lister de Wall , que se encuentra en la página del manual de Perl. [28]

Programming Perl , publicado por O'Reilly Media , presenta una imagen de un dromedario en la portada y comúnmente se le llama "Libro del Camello". [29] Esta imagen se ha convertido en un símbolo no oficial de Perl, así como en un emblema general de los hackers , que aparece en camisetas y otras prendas de vestir. [ cita necesaria ] O'Reilly posee la imagen como marca registrada , pero la licencia para uso no comercial , lo que requiere solo un reconocimiento y un enlace a www.perl.com. La concesión de licencias para uso comercial se decide caso por caso. [30] O'Reilly también proporciona logotipos de "Programación de la República de Perl" para sitios no comerciales y botones "Desarrollado por Perl" para cualquier sitio que utilice Perl. [30]

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

Sebastian Riedel, el creador de Mojolicious , creó un logotipo que representa un dinosaurio rapaz , que está disponible bajo una licencia CC-SA, versión 4.0. [33] El análogo de la rapaz proviene de una serie de charlas dadas por Matt S Trout a partir de 2010. [34]

Historia

Versiones tempranas

Larry Wall comenzó a trabajar en Perl en 1987, mientras trabajaba como programador en Unisys ; [16] lanzó la versión 1.0 el 18 de diciembre de 1987. [1]

[11] El lenguaje inicial de Perl en el que Wall lo basó fue el uso de lenguajes existentes que ayudarían con la manipulación del texto. [11]

Perl 2, lanzado en junio de 1988, [35] [36] presentaba un mejor motor de expresiones regulares. Perl 3, lanzado en octubre de 1989, [35] agregó soporte para flujos de datos binarios . [37]

década de 1990

Originalmente, la única documentación para Perl era una única y extensa página de manual . En 1991, se publicó Programming Perl , conocido por muchos programadores de Perl como el "Libro Camel" debido a su portada, y se convirtió en la referencia de facto del lenguaje. [38] 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. [39] Perl 4 fue lanzado en marzo de 1991. [35]

Perl 4 pasó por una serie de versiones de mantenimiento , que culminaron con Perl 4.036 en 1993, tras lo cual 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 migración de Perl 5 a diferentes plataformas. Sigue siendo el foro principal para el desarrollo, mantenimiento y portabilidad de Perl 5. [40]

Perl 5.000 fue lanzado el 17 de octubre de 1994. [41] Fue una reescritura casi completa del intérprete y agregó muchas características nuevas al lenguaje, incluidos objetos , referencias , variables léxicas (mis) y módulos . Es importante destacar que los módulos proporcionaron un mecanismo para ampliar el lenguaje sin modificar el intérprete. Esto permitió que el intérprete central se estabilizara, al mismo tiempo que permitía a los programadores comunes de Perl agregar nuevas características del lenguaje. Perl 5 ha estado en desarrollo activo desde entonces.

Perl 5.001 se lanzó el 13 de marzo de 1995. Perl 5.002 se lanzó el 29 de febrero de 1996 con la función de nuevos prototipos. Esto permitió a los autores de módulos crear subrutinas que se comportaban como elementos integrados de Perl . Perl 5.003 se publicó el 25 de junio de 1996 como versión de seguridad. [42]

Uno de los eventos más importantes en la historia de Perl 5 tuvo lugar fuera del lenguaje propiamente dicho y fue consecuencia del soporte de su módulo. El 26 de octubre de 1995, se estableció la Red Integral de Archivos Perl (CPAN) como depósito del lenguaje Perl y los módulos Perl ; A diciembre de 2022 , incluye más de 211 850 módulos en 43 865 distribuciones, escritos por más de 14 324 autores y está reflejado en todo el mundo en más de 245 ubicaciones. [43]

Perl 5.004 se lanzó el 15 de mayo de 1997 e incluía, entre otras cosas, el paquete UNIVERSAL, que proporcionaba a Perl un objeto base del que se derivaban automáticamente todas las clases y la capacidad de requerir versiones de módulos. Otro avance significativo fue la inclusión del módulo CGI.pm , [44] que contribuyó a la popularidad de Perl como lenguaje de programación CGI . [45]

Perl 5.004 agregó soporte para Microsoft Windows , Plan 9 , QNX y AmigaOS . [44]

Perl 5.005 se lanzó el 22 de julio de 1998. Esta versión incluyó varias mejoras al motor de expresiones regulares , nuevos enlaces en el backend a través de los B::*módulos, el qr//operador de cotización de expresiones regulares, una gran selección de otros módulos principales nuevos y soporte agregado para varios sistemas operativos más. sistemas, incluido BeOS . [46]

2000-2020

Perl 5.6 se lanzó el 22 de marzo de 2000. Los cambios importantes incluyeron compatibilidad con 64 bits , representación de cadenas Unicode , compatibilidad con archivos de más de 2 GiB y la palabra clave "nuestro". [48] ​​[49] Al desarrollar Perl 5.6, se tomó la decisión de cambiar el esquema de versiones a uno más similar a otros proyectos de código abierto; Después de 5.005_63, la siguiente versión pasó a ser 5.5.640, con planes para que las versiones de desarrollo tengan números impares y las versiones estables tengan números pares. [50]

En 2000, Wall solicitó a la comunidad sugerencias para una nueva versión de Perl. El proceso dio como resultado 361 documentos RFC (solicitud de comentarios) que se utilizarían para guiar el desarrollo de Perl 6. En 2001, [51] se comenzó a trabajar en los "Apocalipsis" de Perl 6, una serie de documentos destinados a resumir el cambio. solicitudes y presentar el diseño de la próxima generación de Perl. Se presentaron como un resumen de los RFC, más que como un documento formal. En ese momento, Perl 6 existía sólo como descripción de un lenguaje. [ cita necesaria ]

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

En 2004, se empezó 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 . [53] Este fue el primer esfuerzo concertado para hacer realidad Perl 6. Este esfuerzo se estancó en 2006. [54]

PONIE es un acrónimo de Perl On New Internal Engine. El Proyecto PONIE existió desde 2003 hasta 2006 e iba a ser un puente entre Perl 5 y Perl 6. Fue un esfuerzo por reescribir el intérprete de Perl 5 para ejecutarlo en Parrot , la máquina virtual de Perl 6. El objetivo era asegurar el futuro de millones de líneas de código Perl 5 en miles de empresas de todo el mundo. [55] 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 ese proyecto. [56]

El 18 de diciembre de 2007, en el vigésimo 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 declaración de cambio (llamada "dado"/"cuando"), actualizaciones de expresiones regulares y el operador de coincidencia inteligente (~~). [57] [58] Por esta misma época, comenzó en serio el desarrollo de otra implementación de Perl 6 conocida como Rakudo Perl , desarrollada en conjunto con la máquina virtual Parrot . En noviembre de 2009, Rakudo Perl ha tenido lanzamientos mensuales regulares y ahora es la implementación más completa de Perl 6.

Un cambio importante en el proceso de desarrollo de Perl 5 se produjo con Perl 5.11; la comunidad de desarrollo ha cambiado a un ciclo de lanzamiento mensual de lanzamientos de desarrollo, con un cronograma anual de lanzamientos estables. Según ese plan, las versiones de puntos de corrección de errores seguirán a las versiones estables cada tres meses. [ cita necesaria ]

El 12 de abril de 2010, se lanzó Perl 5.12.0. Las mejoras principales notables incluyen nueva package NAME VERSIONsintaxis, el operador yada yada (destinado a marcar el código de marcador de posición que aún no está implementado), restricciones implícitas, cumplimiento total de Y2038 , sobrecarga de conversión de expresiones regulares, compatibilidad con DTrace y Unicode 5.2. [59]

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

El 20 de mayo de 2012, se lanzó Perl 5.16. Las nuevas características notables incluyen la capacidad de especificar una versión determinada de Perl que se desea emular, lo que permite a los usuarios actualizar su versión de Perl, pero seguir ejecutando scripts antiguos que normalmente serían incompatibles. [61] [ verificación fallida ] Perl 5.16 también actualiza el núcleo para admitir Unicode 6.1. [61]

El 18 de mayo de 2013, se lanzó Perl 5.18. Las nuevas características notables incluyen los nuevos ganchos dtrace, subs léxicos, más subs CORE::, revisión del hash por razones de seguridad, soporte para Unicode 6.2. [62]

El 27 de mayo de 2014, se lanzó Perl 5.20. Las nuevas características notables incluyen firmas de subrutina, sintaxis de cortes hash/nuevos cortes, desreferenciación de postfijos (experimental), Unicode 6.3 y una función rand() que utiliza un generador de números aleatorios consistente. [63]

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

A finales de 2012 y 2013, se iniciaron varios proyectos para implementaciones alternativas para Perl 5: Perl5 en Perl6 por el equipo Rakudo Perl, [68] moe por Stevan Little y amigos, [69] p2 [70] por el equipo Perl11 bajo Reini Urban, gperl de goccy, [71] y rperl, un proyecto de Kickstarter dirigido por Will Braswell y afiliado al proyecto Perll11. [72]

Perl 6 y Raku

Camelia , el logotipo del proyecto Perl 6 [73]

En la Conferencia Perl de 2000 , Jon Orwant defendió una importante iniciativa de nuevo lenguaje. [74] 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 para nuevas características del lenguaje a la comunidad Perl en general, que presentó más de 300 RFC . [75]

Wall pasó los siguientes años digiriendo los RFC y sintetizándolos 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 Programación en Perl . En enero de 2011 , la especificación en desarrollo de Perl 6 se encapsuló en documentos de diseño llamados Sinopsis, numerados para corresponder a Apocalipsis. [76]

El trabajo de tesis de Bradley M. Kuhn , supervisado por Wall, consideró el posible uso de la máquina virtual Java como tiempo de ejecución de Perl. [77] La ​​tesis de Kuhn mostró que este enfoque era problemático. En 2001, se decidió que Perl 6 se ejecutaría en una máquina virtual multilenguaje llamada Parrot . Esto significará que otros idiomas dirigidos a Parrot obtendrán acceso nativo a CPAN , lo que permitirá cierto nivel de desarrollo entre idiomas. [ cita necesaria ]

En 2005, Audrey Tang creó el proyecto Pugs , una implementación de Perl 6 en Haskell . Esto actuó y continúa actuando como una plataforma de prueba para el lenguaje Perl 6 (aparte del desarrollo de la implementación real), lo que permitió a los diseñadores del lenguaje explorar. El proyecto Pugs generó una comunidad activa en varios idiomas de Perl/Haskell centrada en el canal IRC Libera Chat #raku. El equipo de diseño de Perl 6 absorbió muchas influencias de la programación funcional . [78]

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

  1. Rakudo , una implementación que se ejecuta en la máquina virtual Parrot y la máquina virtual Java. [80]
  2. Niecza , que apunta a Common Language Runtime .

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

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

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

Perla 7

En junio de 2020, se anunció Perl 7 como el sucesor de Perl 5. [84] Perl 7 se basaría inicialmente en Perl 5.32 con un lanzamiento previsto para la primera mitad de 2021 y lanzamientos candidatos antes. [85]

Este plan se revisó en mayo de 2021, sin especificar ningún plazo de lanzamiento ni versión de Perl 5 para su uso como base. [86] Cuando se lance Perl 7, Perl 5 entrará en mantenimiento a largo plazo. Sin embargo, las versiones compatibles de Perl 5 seguirán obteniendo importantes correcciones de errores y seguridad. [87]

Perl 7 se anunció el 24 de junio de 2020 en "La Conferencia Perl en la Nube" como el sucesor de Perl 5. [85] [84] Basado en Perl 5.32, se planeó que Perl 7 fuera compatible con versiones anteriores del código Perl 5 moderno; El código Perl 5, sin encabezado repetitivo (pragma), debe agregarse use compat::perl5;para seguir siendo compatible, pero el código moderno puede eliminar parte del repetitivo.

Sin embargo, el plan de pasar a Perl 7 generó más discusión y el Comité Directivo de Perl lo canceló para evitar problemas con la compatibilidad con versiones anteriores de scripts que no fueron escritos en los pragmas y módulos que se convertirían en los predeterminados en Perl 7. Perl 7 solo aparece cuando los desarrolladores agregan suficientes funciones para garantizar una actualización importante de la versión. [88]

Diseño

Filosofía

Según Wall, Perl tiene dos lemas. La primera es "Hay más de una manera de hacerlo", comúnmente conocida como TMTOWTDI (pronunciada Tim Toady ). Como sostienen los defensores de este lema, esta filosofía facilita la redacción de declaraciones concisas. [89] [90] [91]

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

El diseño de Perl puede entenderse como una respuesta a tres grandes tendencias en la industria informática: la caída de los costos del hardware, el aumento de los costos laborales y las mejoras en la tecnología de compilación . Muchos lenguajes informáticos anteriores, como Fortran y C, tenían como objetivo hacer un uso eficiente del costoso hardware informático. Por el contrario, Perl fue diseñado para que los programadores pudieran escribir programas más rápida y fácilmente. [92]

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 automática de la memoria; escritura dinámica ; cadenas, listas y hashes; expresiones regulares; introspección ; y una eval()función. Perl sigue la teoría de "sin límites incorporados", [29] 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 . Los ejemplos incluyen codificación Huffman (las construcciones comunes deben ser breves), una buena ponderación final (la información importante debe ir primero) y una gran colección de primitivos del lenguaje . Perl favorece construcciones de lenguaje que sean concisas y naturales de escribir para los humanos, incluso cuando compliquen al intérprete de Perl. [93]

La sintaxis de Perl refleja la idea de que "las cosas que son diferentes deberían verse diferentes". [94] Por ejemplo, los escalares, matrices y hashes tienen diferentes sigilos principales. Los índices de matriz y las claves hash utilizan diferentes tipos de llaves. Las cadenas y las expresiones regulares tienen delimitadores estándar diferentes. Este enfoque puede contrastarse con un lenguaje como Lisp , donde se utiliza la misma sintaxis básica, compuesta de expresiones simbólicas simples y universales , para todos los propósitos. [ cita necesaria ]

Existe una amplia inclinación práctica tanto en el lenguaje Perl como en la comunidad y cultura que lo rodean. El prefacio de Programación Perl comienza: "Perl es un lenguaje para realizar el trabajo". [16] Una consecuencia de esto es que Perl no es un lenguaje ordenado. Incluye muchas características, tolera excepciones a sus reglas y emplea heurísticas para resolver ambigüedades sintácticas. Debido a la naturaleza indulgente del compilador, a veces puede ser difícil encontrar errores. La documentación de funciones de Perl comenta sobre el comportamiento variante de las funciones integradas en contextos escalares y de lista diciendo: "En general, hacen lo que usted quiere, a menos que quiera coherencia". [95]

Características

La estructura general de Perl deriva en términos generales de C. Perl es de naturaleza procedimental , con variables , expresiones , declaraciones de asignación , bloques delimitados por llaves , estructuras de control y subrutinas . [96]

Perl también toma características de la programación de shell. Todas las variables están marcadas con sigilos iniciales , que permiten interpolar las variables directamente en cadenas . Sin embargo, a diferencia del shell, Perl usa sigilos en todos los accesos a variables y, a diferencia de la mayoría de los otros lenguajes de programación que usan sigilos, el sigilo no denota el tipo de variable sino el tipo de expresión. Así, por ejemplo, mientras que una matriz se indica con el sigilo "@" (por ejemplo @arrayname), un miembro individual de la matriz se indica con el sigilo escalar "$" (por ejemplo $arrayname[3]). Perl también tiene muchas funciones integradas que proporcionan herramientas que se utilizan a menudo en la programación del shell (aunque muchas de estas herramientas se implementan mediante programas externos al shell), como ordenar y llamar a las funciones del sistema operativo . [ cita necesaria ]

Perl toma hashes ("matrices asociativas") de AWK y expresiones regulares de sed . Estos simplifican muchas tareas de análisis, manejo de texto y gestión de datos. Compartido con Lisp está el retorno implícito del último valor en un bloque, y todas las declaraciones también son expresiones que se pueden usar en expresiones más grandes. [ cita necesaria ]

Perl 5 agregó características que admiten estructuras de datos complejas , funciones de primera clase (es decir, cierres como valores) y un modelo de programación orientado a objetos. Estos incluyen referencias , paquetes, envío de métodos basados ​​en clases y variables de ámbito léxico , junto con directivas del compilador (por ejemplo, strict pragma ). Una característica adicional importante introducida con Perl 5 fue la capacidad de empaquetar código como módulos reutilizables. Wall declaró más tarde que "toda la intención del sistema de módulos de Perl 5 era fomentar el crecimiento de la cultura Perl en lugar del núcleo de Perl". [97]

Todas las versiones de Perl realizan escritura automática de datos y administración automática de memoria . El intérprete conoce el tipo y los requisitos de almacenamiento de cada objeto de datos del programa; les asigna y libera almacenamiento según sea necesario mediante el recuento de referencias (por lo que no puede desasignar estructuras de datos circulares sin intervención manual). Las conversiones de tipos legales (por ejemplo, conversiones de número a cadena) se realizan automáticamente en tiempo de ejecución ; Las conversiones de tipos ilegales son errores fatales. [ cita necesaria ]

Sintaxis

Sus críticos se han referido a Perl como "ruido de línea" y un lenguaje de sólo escritura. La primera mención de este tipo fue en la primera edición del libro Learning Perl , un libro tutorial de Perl 4 escrito por Randal L. Schwartz , [98] en el primer capítulo del cual afirma: "Sí, a veces Perl parece ruido de línea al principio". "Para los no iniciados, pero para el programador experimentado de Perl, parece un ruido de línea de suma de verificación con una misión en la vida". [99] También afirmó que la acusación de que Perl es un lenguaje de sólo escritura podría evitarse codificando con el "cuidado adecuado". [99] El documento de descripción general de Perl perlintro afirma que los nombres de las variables escalares "mágicas" incorporadas "parecen puntuación o ruido de línea". [100] Sin embargo, el módulo de inglés ofrece alternativas en inglés tanto largas como cortas. El documento perlstyle establece que el ruido de línea en las expresiones regulares podría mitigarse usando el /xmodificador para agregar espacios en blanco. [101]

Según las preguntas frecuentes de Perl 6 , 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, incluida la eliminación de "la mayoría de las variables de puntuación" y la desinfección de la sintaxis de expresiones regulares. . [102] Las preguntas frecuentes de Perl 6 también afirman que lo que a veces se denomina ruido de línea de Perl es "la sintaxis real del idioma", del mismo modo que los gerundios y las preposiciones son parte del idioma inglés . [102] En una publicación de blog de diciembre de 2012, a pesar de afirmar que "Rakudo Perl 6 ha fallado y seguirá fallando a menos que reciba supervisión de un adulto", chromatic afirmó que el diseño de Perl 6 también tiene una "gramática bien definida". como 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". [103] También afirmó que "Perl 6 tiene una coherencia y una consistencia de las que carece Perl 5". [103]

En versiones anteriores de Perl, se escribiría "¡Hola, mundo!" programar como:

imprimir "¡Hola mundo!\n" ; 

Aquí hay un programa Perl más complejo, que cuenta atrás los segundos a partir de un valor inicial determinado:

#!/usr/bin/perl uso estricto ; utilizar advertencias ;  mi ( $restante , $total );    $restante = $total = cambio ( @ARGV );    STDOUT -> descarga automática ( 1 );while ( $restante ) { printf ( "%s/%s \r restante" , $restante -- , $total ); dormir 1 ; }            imprimir "\n" ; 

El intérprete de Perl también se puede utilizar para scripts únicos en la línea de comando. El siguiente ejemplo (tal como se invoca desde un shell 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 escrita ni estándar para el lenguaje Perl para las versiones de Perl hasta Perl 5, y no hay planes para crear uno para la versión actual de Perl. Sólo ha habido una implementación del intérprete y el lenguaje ha evolucionado junto con ella. Ese intérprete, junto con sus pruebas funcionales, constituye una especificación de facto del lenguaje. Perl 6, sin embargo, comenzó con una especificación [104] y varios proyectos [105] tienen como objetivo implementar parte o la totalidad de la especificación. [ cita necesaria ]

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 2010 , el intérprete tiene 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 enlaces e integrarse en otros programas. Hay casi 500 módulos en la distribución, 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 consta de tablas de codificación de caracteres ). [ cita necesaria ]

El intérprete tiene una arquitectura orientada a objetos. Todos los elementos del lenguaje Perl (escalares, matrices, hashes, coderefs, identificadores de archivos ) están representados en el intérprete mediante estructuras C. Las operaciones en estas estructuras están definidas por una gran colección de macros , typedefs y funciones; estos constituyen la API de Perl C. La API de Perl puede resultar desconcertante para los no iniciados, pero sus puntos de entrada siguen un esquema de nomenclatura coherente , que proporciona orientación a quienes la utilizan. [ cita necesaria ]

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. [106] En Perl, las fases son las etapas principales en el ciclo de vida del intérprete. Cada intérprete pasa por cada fase sólo una vez y las fases siguen en una secuencia fija. [ cita necesaria ]

La mayor parte de lo que sucede en la fase de compilación de Perl es compilación, y la mayor parte de lo que sucede en la fase de ejecución de Perl es ejecución, pero existen 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 cada momento 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 ingresarse durante la fase de ejecución. El tiempo de compilación del código en un argumento de cadena pasado al evalintegrado ocurre durante la fase de ejecución. Perl suele estar 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 en un árbol de sintaxis . En tiempo de ejecución, ejecuta el programa recorriendo el árbol . El texto se analiza solo una vez y el árbol de sintaxis está sujeto a optimización antes de ejecutarse, por lo que la ejecución es relativamente eficiente. Las optimizaciones en tiempo de compilación en el árbol de sintaxis incluyen el plegado constante y la propagación de contexto, pero también se realiza una optimización de mirilla . [107]

Perl tiene una gramática completa de Turing porque el análisis puede verse afectado por el código en tiempo de ejecución ejecutado durante la fase de compilación. [108] Por lo tanto, Perl no puede ser analizado mediante una combinación directa de lexer / analizador Lex / Yacc . En cambio, el intérprete implementa su propio lexer, que se coordina con un analizador bisonte GNU modificado para resolver ambigüedades en el lenguaje. [ cita necesaria ]

A menudo se dice que "Sólo Perl puede analizar Perl", [109] lo que significa que sólo el intérprete de Perl ( perl) puede analizar el lenguaje Perl ( Perl ), pero incluso esto, en general, no es cierto. Debido a que el intérprete de Perl puede simular una máquina de Turing durante su fase de compilación, necesitaría decidir el problema de detención para completar el análisis en cada caso. Es un resultado de larga data que el problema de detención es indecidible y, por lo tanto, ni siquiera Perl siempre puede analizar Perl. Perl toma la inusual decisión de darle al usuario acceso a todo su poder de programación en su propia fase de compilación. El coste en términos de pureza teórica es elevado, pero los inconvenientes prácticos parecen ser raros. [110]

Otros programas que se dedican a analizar Perl, como los analizadores de código fuente y los autoindentadores , tienen que lidiar no sólo con construcciones sintácticas ambiguas sino también con la indecidibilidad del análisis de Perl en el caso general. El proyecto PPI de Adam Kennedy se centró en analizar el código Perl como un documento (conservando su integridad como documento), en lugar de analizar Perl como código ejecutable (que ni siquiera el propio Perl siempre puede hacer). Fue Kennedy quien conjeturó por primera vez que "el análisis de Perl sufre el 'problema de detención'", [111] lo que se demostró más tarde. [112]

Perl se distribuye con más de 250.000 pruebas funcionales para el lenguaje principal Perl y más de 250.000 pruebas funcionales para los módulos principales. Estos se ejecutan como parte del proceso de construcción normal y ejercitan ampliamente al 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 ven que el intérprete pasa las pruebas funcionales en su sistema pueden tener un alto grado de confianza de que está funcionando correctamente. [ cita necesaria ]

Puertos

Perl tiene doble licencia bajo la Licencia Artística 1.0 [5] [6] y la Licencia Pública General GNU . [7] Hay distribuciones disponibles para la mayoría de los sistemas operativos . Es particularmente frecuente en Unix y sistemas similares , pero ha sido portado a la mayoría de las plataformas modernas (y muchas obsoletas). Con solo seis [ cita necesaria ] excepciones reportadas, Perl se puede compilar a partir del código fuente en todas las plataformas compatibles con POSIX o compatibles con Unix. [113]

Debido a los cambios inusuales necesarios para el entorno Mac OS clásico , se envió de forma independiente un puerto especial llamado MacPerl. [114]

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

ActivePerl es una distribución de código cerrado de ActiveState que tiene versiones periódicas que rastrean las versiones principales de Perl. [116] La distribución incluía anteriormente el administrador de paquetes Perl (PPM), [117] una herramienta popular para instalar, eliminar, actualizar y administrar el uso de módulos Perl comunes; sin embargo, esta herramienta se suspendió a partir de ActivePerl 5.28. [118] También se incluye PerlScript , un motor Windows Script Host (WSH) que implementa el lenguaje Perl. Visual Perl es una herramienta ActiveState que agrega Perl al paquete de desarrollo Visual Studio .NET. Esta empresa también ha producido un convertidor de VBScript a Perl, así como un compilador de Perl para Windows y convertidores de awk y sed a Perl, que se incluyen en el CD ActiveState para Windows , que incluye todas sus distribuciones más Komodo. IDE y todos menos el primero en su variante Unix/Linux/Posix en 2002 y posteriormente. [119]

Actuación

El juego Computer Language Benchmarks compara el rendimiento de implementaciones de problemas de programación típicos en varios lenguajes de programación. [120] Las implementaciones de Perl enviadas normalmente funcionan en el extremo superior del espectro de uso de memoria y dan resultados de velocidad variados. El desempeño de Perl en el juego de los benchmarks es típico de los lenguajes interpretados. [121]

Los programas grandes de Perl 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 mucho tiempo a buscar módulos dentro de sus archivos demasiado grandes. incluir ruta. [122] A diferencia de Java, Python y Ruby, Perl sólo tiene soporte experimental para la precompilación. [123] Por lo tanto, los programas Perl pagan esta penalización general 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 puntos de referencia que miden tiempos de ejecución muy cortos estén sesgados debido a esta sobrecarga. [124]

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

Una vez que se compila el código Perl, hay una sobrecarga adicional durante la fase de ejecución que normalmente no está presente en los programas escritos en lenguajes compilados como C o C++. Ejemplos de dicha sobrecarga incluyen la interpretación de códigos de bytes , la gestión de memoria de recuento de referencias y la verificación dinámica de tipos. [126]

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

Aplicaciones

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

Perl se ha utilizado principalmente para escribir scripts CGI : grandes proyectos escritos en Perl incluyen cPanel , Slash , Bugzilla , RT , TWiki y Movable Type ; Los sitios web de alto tráfico que utilizan Perl ampliamente incluyen Priceline.com , Craigslist , [128] IMDb , [129] LiveJournal , DuckDuckGo , [130] [131] Slashdot y Ticketmaster . También es un componente opcional de la popular pila de tecnología LAMP para 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 . [132]

Perl se utiliza a menudo como lenguaje adhesivo , que une sistemas e interfaces que no fueron diseñados específicamente para interoperar, y para " mezcla de datos ", [133] es decir, convertir o procesar grandes cantidades de datos para tareas como la creación de informes. De hecho, estas fortalezas están íntimamente relacionadas. La combinación convierte a Perl en un lenguaje multipropósito popular para los administradores de sistemas , particularmente porque los programas cortos, a menudo llamados " programas de una sola línea ", se pueden ingresar y ejecutar en una sola línea de comando . [ cita necesaria ]

El código Perl se puede hacer portátil entre Windows y Unix; Los proveedores de software (tanto COTS como personalizados) suelen utilizar dicho código para simplificar el empaquetado y el mantenimiento de scripts de creación e implementación de software. [ cita necesaria ]

Perl/Tk y wxPerl se utilizan comúnmente para agregar interfaces gráficas de usuario a los scripts Perl.

Las capacidades de manejo de texto de Perl se pueden utilizar para generar consultas SQL ; Las matrices, los hashes y la gestión automática de la memoria facilitan la recopilación y el procesamiento de 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 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 aquí ). El uso de la interpolación de variables de Perl para personalizar mediante programación cada una de las consultas SQL, y la especificación de matrices o hashes de Perl como estructuras para contener mediante programación los conjuntos de datos resultantes de cada consulta SQL, permite un mecanismo de alto nivel para manejar grandes cantidades de datos. para el posprocesamiento mediante un subprograma Perl. [134] En las primeras versiones de Perl, las interfaces de bases de datos se creaban volviendo a vincular el intérprete con una biblioteca de bases de datos del lado del cliente . Esto fue lo suficientemente difícil como para que se hiciera solo para algunas de las bases de datos más importantes y más utilizadas, y restringió el ejecutable resultante al uso de una sola interfaz de base de datos a la vez. [135]perl

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

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

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

Comunidad

La cultura y la comunidad de Perl se han desarrollado junto con el propio lenguaje. Usenet fue el primer lugar público en el que se introdujo Perl, pero a lo largo de su evolución, la comunidad de Perl fue moldeada por el crecimiento de los servicios basados ​​en Internet, incluida la introducción de la World Wide Web. La comunidad que rodea a Perl fue, de hecho, el tema de la primera charla de Wall sobre el "Estado de la cebolla". [142]

State of the Onion es el nombre de los resúmenes anuales de Wall sobre el progreso de Perl y su comunidad. Se caracterizan por su humor característico, empleando referencias a la cultura de Perl, la cultura hacker más amplia, el origen lingüístico de Wall, a veces su vida familiar y, en ocasiones, incluso su origen cristiano. [143] Cada charla se da por primera vez en varias conferencias de Perl y finalmente también se publica en línea.

En correos electrónicos, Usenet y publicaciones en foros, los programas " Sólo otro hacker de Perl " (JAPH) son una tendencia común, originada por Randal L. Schwartz , uno de los primeros formadores profesionales de Perl. [144] En el lenguaje de la cultura Perl, los programadores de Perl son conocidos como hackers de Perl, y de esto se deriva 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 son moderadamente ofuscados y lo suficientemente cortos como para caber en la firma de un correo electrónico o mensaje de Usenet. El JAPH "canónico" desarrollado por Schwartz incluye la coma al final, aunque a menudo se omite. [145]

Perl "golf" es el pasatiempo de reducir al mínimo el número de caracteres ("golpes" de teclas) utilizados en un programa Perl, de la misma manera que los jugadores de golf buscan realizar la menor cantidad de tiros posible en una ronda. El primer uso de la frase [146] enfatizó la diferencia entre código peatonal destinado a enseñar a un recién llegado y trucos concisos que probablemente divertirán a los programadores experimentados de Perl, un ejemplo de estos últimos son los JAPH que ya se usaban en firmas en publicaciones de Usenet y en otros lugares. Trucos similares habían sido un pasatiempo anónimo en el idioma APL en décadas anteriores. El uso de Perl para escribir un programa que realizaba cifrado RSA generó un interés práctico y generalizado en este pasatiempo. [147] En los años siguientes, el término " código de golf " se aplicó al pasatiempo en otros idiomas. [148] Se celebró un Apocalipsis de Perl Golf en la Conferencia Perl 4.0 en Monterey, California, en julio de 2000.

Al igual que con C, las competiciones de códigos ofuscados eran un pasatiempo muy conocido a finales de los años 1990. El concurso de Perl ofuscado fue un concurso organizado por The Perl Journal de 1996 a 2000 que hizo de la flexibilidad sintáctica de Perl una gran virtud. Se otorgaron premios en categorías como "más potentes" (programas que hicieron un uso eficiente del espacio) y "mejor firma de cuatro líneas" para programas que caben en cuatro líneas de 76 caracteres al estilo de un bloque de firma de Usenet . [149]

La poesía en Perl es la práctica de escribir poemas que pueden compilarse como código Perl legal, 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 idioma Perl. Regularmente se envían nuevos poemas a la comunidad de PerlMonks . [150]

Ver también

Referencias

  1. ^ abc Ashton, Elaine (1999). "La cronología de Perl y su cultura (v3.0_0505)". Archivado desde el original el 11 de enero de 2013 . Consultado el 12 de marzo de 2004 .
  2. ^ "Perl 5.34.3, Perl 5.36.3 y Perl 5.38.2 ya están disponibles". www.nntp.perl.org . Consultado el 5 de diciembre de 2023 .
  3. ^ "Perl 5.34.3, Perl 5.36.3 y Perl 5.38.2 ya están disponibles". www.nntp.perl.org . Consultado el 5 de diciembre de 2023 .
  4. ^ "Anuncio de lanzamiento de Perl v5.39.7". www.nntp.perl.org . Consultado el 20 de enero de 2024 .
  5. ^ ab "La" licencia artística "- dev.perl.org". dev.perl.org . Archivado desde el original el 24 de julio de 2018 . Consultado el 24 de junio de 2016 .
  6. ^ ab Artistic Archivado el 25 de julio de 2018 en Wayback Machine - archivo en el repositorio git de Perl 5
  7. ^ ab "Licencias de Perl". dev.perl.org. Archivado desde el original el 22 de enero de 2011 . Consultado el 8 de enero de 2011 .
  8. ^ Larry Wall (12 de diciembre de 2007). "Programar es difícil, vamos a escribir scripts..." Archivado desde el original el 28 de julio de 2017 . Consultado el 14 de abril de 2019 . Todos los diseñadores de lenguajes tienen sus idiosincrasias ocasionales. Simplemente soy mejor en eso que la mayoría.
  9. ^ Lapworth, Leo. "Preguntas generales sobre Perl". Preguntas frecuentes sobre Perl . Perl.org. Archivado desde el original el 28 de mayo de 2013 . Consultado el 24 de febrero de 2012 .
  10. ^ "perl (1): lenguaje práctico de extracción/informes: página de manual de Linux". Linux.die.net. Archivado desde el original el 3 de junio de 2013 . Consultado el 23 de julio de 2013 .
  11. ^ abcdef Largo, Tony. "18 de diciembre de 1987: Perl simplifica el laberinto que es el lenguaje de programación". Cableado . ISSN  1059-1028 . Consultado el 14 de febrero de 2023 .
  12. ^ Sheppard, Doug (16 de octubre de 2000). "Introducción a Perl para principiantes". dev.perl.org. Archivado desde el original el 5 de junio de 2011 . Consultado el 8 de enero de 2011 .
  13. ^ ab "Larry Wall, el gurú de Perl | Linux Journal". www.linuxjournal.com . Consultado el 30 de agosto de 2023 .
  14. ^ "Acerca de Perl". perl.org. Archivado desde el original el 6 de noviembre de 2015 . Consultado el 20 de abril de 2013 ."Perl" es una familia de lenguajes, "Perl 6" es parte de la familia, pero es un lenguaje independiente que tiene su propio equipo de desarrollo. Su existencia no tiene ningún impacto significativo en el desarrollo continuo de "Perl 5".
  15. ^ "Camino a Raku". GitHub. Archivado desde el original el 12 de noviembre de 2020 . Consultado el 14 de enero de 2021 . Este documento describe los pasos a seguir para efectuar un cambio de nombre de Perl 6 a Raku
  16. ^ pared abcd, Larry ; Christiansen, Tom; Orwant, Jon (julio de 2000). Programación Perl, tercera edición . Medios O'Reilly . ISBN 978-0-596-00027-1.
  17. ^ "Cómo se miden los programas | Juego de puntos de referencia del lenguaje informático". puntos de referenciagame-team.pages.debian.net . Archivado desde el original el 12 de julio de 2020 . Consultado el 5 de octubre de 2020 .
  18. ^ "RSA en 3 líneas de perl - Everything2.com". todo2.com . Archivado desde el original el 8 de octubre de 2020 . Consultado el 5 de octubre de 2020 .
  19. ^ "Evaluaciones de idiomas". Archivado desde el original el 10 de marzo de 2015 . Consultado el 30 de enero de 2015 . El punto más fuerte de Perl son sus extremadamente potentes funciones integradas para el procesamiento dirigido por patrones de formatos de datos textuales orientados a líneas; es insuperable en esto.
  20. ^ "¡¿Usaste Perl para escribir QUÉ ?!". 24 de enero de 2008. Archivado desde el original el 4 de febrero de 2015 . Consultado el 4 de febrero de 2015 . Perl siempre ha sido el lenguaje de referencia para cualquier tarea que implique entrada de coincidencia de patrones.
  21. ^ "La importancia de Perl". Archivado desde el original el 2 de febrero de 2015 . Consultado el 4 de febrero de 2015 . La incomparable capacidad de Perl para procesar texto...
  22. ^ Smith, Roderick W. (21 de junio de 2002). Redes Linux avanzadas . Profesional de Addison-Wesley. pag. 594.ISBN _ 978-0-201-77423-8.
  23. ^ Sheppard, Doug (16 de octubre de 2000). "Introducción a Perl para principiantes". Medios O'Reilly . Archivado desde el original el 4 de junio de 2008 . Consultado el 27 de julio de 2008 .
  24. ^ Leonardo, Andrés. "La alegría de Perl". Salón.com . Archivado desde el original el 6 de julio de 2012 . Consultado el 5 de junio de 2012 .
  25. ^ "Secuencias de comandos en la cubierta Lido". Cableado . 7 de marzo de 2016. Archivado desde el original el 7 de marzo de 2016 . Consultado el 14 de febrero de 2023 .
  26. ^ Richardson, Marjorie (1 de mayo de 1999). "Larry Wall, el gurú de Perl". Diario de Linux . Archivado desde el original el 20 de julio de 2013 . Consultado el 3 de enero de 2011 .
  27. ^ Schwartz, Randal ; foy, brian ; Phoenix, Tom (16 de junio de 2011). Aprendiendo Perl . O'Reilly Media, Inc. pág. 4.ISBN _ 978-1449313142. A Perl a veces se le llama "Lenguaje práctico de extracción e informes", aunque también se le ha llamado "Lista de basura patológicamente ecléctica", entre otras expansiones. En realidad, es un acrónimo, no un acrónimo, ya que a Larry Wall, el creador de Perl, se le ocurrió el nombre primero y la expansión después. Es por eso que 'Perl' no está en mayúsculas. No tiene sentido argumentar que la expansión es correcta: Larry respalda ambas.
  28. ^ Muro, Larry . "perl: el intérprete del lenguaje Perl". Documentación de Perl 5 versión 12.2 . Archivado desde el original el 1 de julio de 2013 . Consultado el 26 de enero de 2011 .
  29. ^ ab Schwartz, Randal L ; Fénix, Tom; Foy, Brian (6 de diciembre de 2007). Aprendizaje de Perl, tercera edición. Medios O'Reilly. ISBN 978-0-596-00132-2.
  30. ^ ab "Información sobre marcas comerciales y uso de Perl Camel". Medios O'Reilly . Archivado desde el original el 25 de abril de 2018 . Consultado el 9 de enero de 2011 .
  31. ^ "Marca registrada de Perl". La Fundación Perl . Archivado desde el original el 3 de mayo de 2011 . Consultado el 9 de enero de 2011 .
  32. ^ Gillmore, Dan (25 de octubre de 1998). "República de Perl". Tribuna de Chicago . Archivado desde el original el 30 de abril de 2011 . Consultado el 10 de enero de 2011 .
  33. ^ Riedel, Sebastián (18 de enero de 2012). "Perl 5 Raptor". Sebastián Riedel . Archivado desde el original el 11 de junio de 2018 . Consultado el 12 de noviembre de 2017 .
  34. ^ Trucha, Matt (16 de junio de 2005). "Estado del Velociraptor - Fase dos". Sistemas Shadowcat limitados . Archivado desde el original el 13 de noviembre de 2017 . Consultado el 12 de noviembre de 2017 .
  35. ^ abc Kalita, Jugal (diciembre de 2003). Sobre Perl: Perl para estudiantes y profesionales. Editores universales. ISBN 978-1-58112-550-4.
  36. ^ "Cultura Perl". docstore.mik.ua . Consultado el 16 de marzo de 2023 .
  37. ^ Holloway, Rut. "Perl cumple 30 años y su comunidad sigue prosperando | Opensource.com". opensource.com . Consultado el 23 de junio de 2023 .
  38. ^ "Programación Perl, tercera edición [libro]". www.oreilly.com . Consultado el 11 de abril de 2023 .
  39. ^ "perlhist - los registros históricos de Perl - Navegador Perldoc". perldoc.perl.org . Consultado el 28 de julio de 2023 .
  40. ^ "archivo perl.perl5.porters". perl.org. Archivado desde el original el 1 de mayo de 2011 . Consultado el 13 de enero de 2011 .
  41. ^ ab "perlhist: los registros históricos de Perl". Documentación de Perl 5 versión 12.2 . perldoc.perl.org. Archivado desde el original el 13 de enero de 2011 . Consultado el 21 de enero de 2011 .
  42. ^ "Perl | Definición, historia y hechos | Britannica". www.britannica.com . Consultado el 15 de junio de 2022 .
  43. ^ "CPAN". CPAN . Archivado desde el original el 3 de octubre de 2019 . Consultado el 19 de diciembre de 2022 .
  44. ^ ab "perl5004delta: novedades de perl5.004". Documentación de Perl 5 versión 12.2 . perldoc.perl.org. Archivado desde el original el 27 de febrero de 2011 . Consultado el 8 de enero de 2011 .
  45. ^ Patwardhan, Nathan; Siever, Ellen; Hora de España, Stephen (2002). Perl en pocas palabras, segunda edición. Medios O'Reilly . ISBN 978-0-596-00241-1.
  46. ^ "perl5005delta: novedades de perl5.005". Documentación de Perl 5 versión 12.2 . perldoc.perl.org. Archivado desde el original el 3 de febrero de 2011 . Consultado el 21 de enero de 2011 .
  47. ^ "Fuente Perl". cpan.org . Consultado el 26 de noviembre de 2023 .
  48. ^ "perl56delta: novedades de perl v5.6.0". Documentación de Perl 5 versión 12.2 . perldoc.perl.org. Archivado desde el original el 2 de febrero de 2011 . Consultado el 21 de enero de 2011 .
  49. ^ "perl56delta: novedades de perl v5.6.x". Documentación de Perl 5 versión 12.2 . perldoc.perl.org. Archivado desde el original el 18 de noviembre de 2010 . Consultado el 21 de enero de 2011 .
  50. ^ "Perl | Definición, historia y hechos | Britannica". www.britannica.com . Consultado el 15 de junio de 2022 .
  51. ^ Muro, Larry. "Apocalipsis 1: El feo, el malo y el bueno". Archivado desde el original el 23 de noviembre de 2010 . Consultado el 8 de enero de 2011 .
  52. ^ "perl58delta: novedades de perl v5.8.0". Documentación de Perl 5 versión 12.2 . perldoc.perl.org. Archivado desde el original el 21 de noviembre de 2010 . Consultado el 21 de enero de 2011 .
  53. ^ "Un plan para pugs". Medios O'Reilly . 3 de marzo de 2005. Archivado desde el original el 8 de septiembre de 2012 . Consultado el 27 de enero de 2011 .
  54. ^ Tang, Audrey (21 de abril de 2010). "Re: Cómo implementar Perl 6 en diez años". PerlMonks . Archivado desde el original el 11 de mayo de 2011 . Consultado el 3 de enero de 2011 .
  55. ^ Geoff Broadwell (8 de agosto de 2005), OSCON 4.4: Inside Ponie, the Bridge from Perl 5 to Perl 6, Blog de O'Reilly ONLamp, archivado desde el original el 14 de marzo de 2012 , recuperado 27 de junio de 2016
  56. ^ Jesse Vincent (23 de agosto de 2006), Ponie ha sido puesta a pastar, The Perl Foundation, archivado desde el original el 27 de junio de 2009 , recuperado 15 de enero 2019
  57. ^ "perl5100delta: novedades de perl 5.10.0". Documentación de Perl 5 versión 12.2 . perldoc.perl.org. Archivado desde el original el 21 de diciembre de 2010 . Consultado el 8 de enero de 2011 .
  58. ^ "perlsyn - sintaxis de Perl". Documentación de Perl 5 versión 12.2 . perldoc.perl.org. Archivado desde el original el 26 de agosto de 2013 . Consultado el 21 de enero de 2011 .
  59. ^ "perl5120delta: novedades de perl v5.12.0". Documentación de Perl 5 versión 12.2 . perldoc.perl.org. Archivado desde el original el 4 de enero de 2011 . Consultado el 8 de enero de 2011 .
  60. ^ "perl5140delta - novedades de perl v5.14.0 - metacpan.org". metacpan.org . Archivado desde el original el 25 de julio de 2018 . Consultado el 22 de julio de 2017 .
  61. ^ ab "perl5160delta: novedades de perl v5.16.0". perldoc.perl.org . Consultado el 21 de mayo de 2012 .
  62. ^ "perl5180delta - novedades de perl v5.18.0 - lenguaje de programación Perl". Documentación de Perl 5 versión 18.0 . metacpan.org. Archivado desde el original el 29 de octubre de 2013 . Consultado el 27 de octubre de 2013 .
  63. ^ "perl5200delta - novedades de perl v5.20.0 - lenguaje de programación Perl". Documentación de Perl 5 versión 20.0 . metacpan.org. Archivado desde el original el 27 de mayo de 2014 . Consultado el 27 de mayo de 2014 .
  64. ^ Hitos en el Renacimiento de Perl: programación moderna en Perl Archivado el 27 de octubre de 2012 en Wayback Machine . Modernperlbooks.com. Recuperado el 17 de julio de 2013.
  65. Prefacio (Perl moderno 2011-2012) Archivado el 28 de septiembre de 2012 en Wayback Machine . Modernperlbooks.com. Recuperado el 17 de julio de 2013.
  66. ^ Edición Modern Perl 2011-2012 por cromática | Onyx Neon Press Archivado el 22 de diciembre de 2011 en Wayback Machine . Onyxneon.com. Recuperado el 17 de julio de 2013.
  67. ^ "Perl iluminado". Perl iluminado . Archivado desde el original el 5 de febrero de 2014 . Consultado el 28 de septiembre de 2012 .
  68. ^ "YAPC::NA 2013 - 3 al 5 de junio, Austin, Texas". Yapcna.org. 4 de junio de 2013. Archivado desde el original el 22 de junio de 2013 . Consultado el 11 de abril de 2014 .
  69. ^ Pequeño, Stevan (8 de febrero de 2013). "¿Qué es Moe (una aclaración) | Stevan Little". Blogs.perl.org. Archivado desde el original el 19 de diciembre de 2013 . Consultado el 11 de abril de 2014 .
  70. ^ "p2 sobre poción". Perl11.org. 7 de febrero de 2004. Archivado desde el original el 24 de septiembre de 2013 . Consultado el 11 de abril de 2014 .
  71. ^ "goccy/gperl · GitHub". GitHub.com. Archivado desde el original el 23 de febrero de 2015 . Consultado el 11 de abril de 2014 .
  72. ^ "perl". RPerl.org. Archivado desde el original el 18 de octubre de 2014 . Consultado el 11 de agosto de 2014 .
  73. ^ "Perla 6". El proyecto Perl 6. Archivado desde el original el 21 de febrero de 2011 . Consultado el 27 de febrero de 2011 .
  74. ^ Torkington, Nathan. "Transcripción de la charla de Larry". nntp.perl.org. Archivado desde el original el 1 de mayo de 2011 . Consultado el 25 de enero de 2011 .
  75. ^ "Perl6: el futuro de Perl". www.java-samples.com . Consultado el 18 de mayo de 2021 .
  76. ^ "Documentación oficial de Perl 6". El proyecto Perl 6. Archivado desde el original el 31 de agosto de 2009 . Consultado el 25 de enero de 2011 .
  77. ^ 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 desde el original el 21 de marzo de 2008 . Consultado el 28 de junio de 2008 .
  78. ^ Cromático (2015). Perl moderno. Estantería pragmática. ISBN 978-1-68050-088-2.
  79. ^ "Comparación de funciones de los compiladores de Perl 6". Archivado desde el original el 11 de agosto de 2017 . Consultado el 28 de marzo de 2012 .
  80. ^ Worthington, Jonathan (15 de julio de 2013). "Noticias de Rakudo JVM: más pruebas, además de prototipos de subprocesos y promesas". 6tripas . Archivado desde el original el 5 de octubre de 2013 . Consultado el 24 de julio de 2013 .
  81. ^ Worthington, Jonathan (31 de mayo de 2013). "MoarVM: una máquina virtual para NQP y Rakudo". 6tripas . Archivado desde el original el 9 de julio de 2013 . Consultado el 24 de julio de 2013 .
  82. ^ "cambiar nombre-lwn". Archivado desde el original el 17 de octubre de 2019 . Consultado el 10 de noviembre de 2019 .
  83. ^ "rakudo/rakudo-GitHub". GitHub.com. Archivado desde el original el 29 de julio de 2017 . Consultado el 21 de septiembre de 2013 .
  84. ^ ab "Perl 7 anunciado en la Conferencia Perl en la Nube". perlfoundation.org. 24 de junio de 2020. Archivado desde el original el 26 de junio de 2020 . Consultado el 24 de junio de 2020 .
  85. ^ ab "Anuncio de Perl 7". perl.com. 24 de junio de 2020. Archivado desde el original el 24 de junio de 2020 . Consultado el 24 de junio de 2020 .
  86. ^ Nicholas Clark (9 de mayo de 2021). "Reunión del Consejo Directivo n.° 019 2021-05-06". www.nntp.perl.org . Archivado desde el original el 18 de mayo de 2021 . Consultado el 17 de mayo de 2021 . El plan sigue siendo que habrá un aumento de Perl 7, pero no inmediatamente después del lanzamiento de 5.34.0. ... No creemos que podamos entregar [Perl 7] en 12 meses. 
  87. ^ Preparándose para Perl 7d. leanpub.com. 24 de junio de 2020. Archivado desde el original el 25 de junio de 2020 . Consultado el 24 de junio de 2020 .
  88. ^ Consejo directivo de Perl. "¿Qué pasó con Perl 7?". blogs.perl.org . Consultado el 7 de julio de 2022 .
  89. ^ Richardson, Marjorie. "Larry Wall, el gurú de Perl | Linux Journal". www.linuxjournal.com . Diario de Linux . Consultado el 16 de enero de 2023 .
  90. ^ Schwartz, Alan (diciembre de 1998). "Tutorial: Perl, un lenguaje de reformateo psicológicamente eficiente". Métodos, instrumentos y computadoras de investigación del comportamiento . 30 (4): 605–609. doi : 10.3758/BF03209477 . ISSN  0743-3808. S2CID  61028367.
  91. ^ Gilbert, James GR (marzo de 2002). "Cómo convertirse en un renacuajo de la programación". Biotecnología de la Naturaleza . 20 (3): 221. doi :10.1038/nbt0302-221. ISSN  1087-0156. S2CID  38728402.
  92. ^ "La caída de Perl, el lenguaje más prometedor de la Web". Compañía Rápida . 13 de febrero de 2014.
  93. ^ Muro, Larry. "perl - El intérprete de idiomas Perl 5 - Navegador Perldoc". perldoc.perl.org . Consultado el 24 de junio de 2021 .
  94. ^ Wall, Larry (1 de marzo de 1997). "¿Donde estás?". Diario de Linux . Archivado desde el original el 9 de diciembre de 2010 . Consultado el 13 de marzo de 2011 .
  95. ^ "perlfunc - Funciones integradas de Perl". Documentación de Perl 5 versión 12.2 . perldoc.perl.org. Archivado desde el original el 6 de enero de 2011 . Consultado el 10 de enero de 2011 .
  96. ^ Nagpal, DP (2010). Tecnología de diseño web . India: S. Chand. pag. 700.ISBN _ 978-8121927635.
  97. ^ "título desconocido". 10 de mayo de 1997. Usenet:  [email protected].[ enlace muerto ]
  98. ^ "Actualización para desarrolladores". Actualización para desarrolladores del Dr. Dobb . Miller-Freeman. 2 . 1995.
  99. ^ ab Schwartz, Randal L. (1993). Aprendiendo Perl . O'Reilly y asociados. Bibcode :1993lepe.book.....S.
  100. ^ "perlintro". Documentación de Perl 5 versión 18.0 . Perl 5 Porters y perldoc.perl.org. Archivado desde el original el 9 de enero de 2011 . Consultado el 30 de junio de 2013 .
  101. ^ "estilo perla". Documentación de Perl 5 versión 18.0 . Perl 5 Porters y perldoc.perl.org. Archivado desde el original el 26 de junio de 2013 . Consultado el 30 de junio de 2013 .
  102. ^ ab "Preguntas frecuentes sobre Perl 6". Proyecto Perl 6. Archivado desde el original el 1 de julio de 2013 . Consultado el 30 de junio de 2013 .
  103. ^ ab cromático (31 de diciembre de 2012). "La implementación de Perl 5 versus Perl 6". Archivado desde el original el 29 de julio de 2013 . Consultado el 30 de junio de 2013 .
  104. ^ "Especificación de Perl 6". El proyecto Perl 6. Archivado desde el original el 2 de diciembre de 2009 . Consultado el 27 de enero de 2011 .
  105. ^ "Compiladores de Perl 6". El proyecto Perl 6. Archivado desde el original el 2 de diciembre de 2009 . Consultado el 27 de enero de 2011 .
  106. ^ Puede encontrar una descripción del intérprete de Perl 5 en Programming Perl , 3.ª edición, capítulo 18. Consulte en particular la página 467, que distingue cuidadosamente la fase de ejecución y la fase de compilación del tiempo de ejecución y el tiempo de compilación . El "tiempo" y la "fase" de Perl a menudo se confunden.
  107. ^ "perlguts - Introducción a la API de Perl - Navegador Perldoc". perldoc.perl.org . Consultado el 24 de enero de 2022 .
  108. ^ Schwartz, Randal . "Sobre el análisis de Perl". Archivado desde el original el 27 de septiembre de 2007 . Consultado el 3 de enero de 2007 .
  109. ^ "El diario Perl n.º 19/9.26" (PDF) . Medios O'Reilly . Consultado el 4 de febrero de 2011 .
  110. ^ Kegler, Jeffrey (7 de octubre de 2011). "Perl y Parsing 11: ¿Son todos los programas Perl analizables?" . Consultado el 25 de octubre de 2022 . ... parece que no renunciamos a absolutamente nada. Nadie ha podido nunca mostrar un inconveniente práctico.
  111. ^ Kennedy, Adán (2006). "PPI: analizar, analizar y manipular Perl (sin Perl)". CPAN . Archivado desde el original el 3 de septiembre de 2013 . Consultado el 16 de septiembre de 2013 .
  112. ^ "Teorema de Rice". La revisión de Perl . 4 (3): 23–29. Verano de 2008.y "Perl es indecidible". La revisión de Perl . 5 : 7–11. Otoño de 2008., disponible en línea en Kegler, Jeffrey. "Perl y la indecidibilidad". Archivado desde el original el 17 de agosto de 2009 . Consultado el 4 de enero de 2009 .
  113. ^ Hietaniemi, Jarkko (1998). "Puertos Perl (distribuciones binarias)". CPAN.org. Archivado desde el original el 18 de abril de 2006 . Consultado el 16 de abril de 2006 .
  114. ^ "Las páginas de MacPerl". Programa gratuito de máxima audiencia. 1997. Archivado desde el original el 18 de enero de 2006 . Consultado el 18 de enero de 2006 .
  115. ^ "Puertos Perl (distribuciones binarias)". CPAN . Archivado desde el original el 18 de abril de 2006 . Consultado el 27 de enero de 2011 .
  116. ^ "ActivePerl es Perl para Windows, Mac, Linux, AIX, HP-UX y Solaris". Software ActiveState . Archivado desde el original el 31 de marzo de 2016 . Consultado el 9 de enero de 2011 .
  117. ^ "Usando PPM". Software ActiveState . Archivado desde el original el 27 de agosto de 2010 . Consultado el 9 de enero de 2011 .
  118. ^ "Adiós PPM, hola herramienta estatal". activestate.com . 23 de julio de 2019. Archivado desde el original el 28 de julio de 2020 . Consultado el 16 de abril de 2020 .
  119. ^ Léame.txt
  120. ^ "Alioth: el juego de puntos de referencia del lenguaje informático: información del proyecto". Aliot . Archivado desde el original el 25 de marzo de 2013 . Consultado el 13 de enero de 2011 .
  121. ^ "¿Qué programas son más rápidos?". Juego de puntos de referencia del lenguaje informático . Aliot . Archivado desde el original el 17 de mayo de 2013 . Consultado el 13 de enero de 2011 .
  122. ^ Leroy, Jean-Louis (1 de diciembre de 2005). "Un comienzo oportuno". O'Reilly. Archivado desde el original el 13 de junio de 2006 . Consultado el 22 de mayo de 2006 .
  123. ^ Beattie, Malcolm y Enache Adrian (2003). "B :: Bytecode motor de código de bytes del compilador Perl". CPAN . Archivado desde el original el 30 de marzo de 2021 . Consultado el 16 de septiembre de 2013 .
  124. ^ Schwartz, Randal; foy, brian; Phoenix, Tom (23 de junio de 2011). Aprendiendo Perl. "O'Reilly Media, Inc.". ISBN 978-1-4493-0358-7.
  125. ^ Stein, Lincoln; MacEachern, Doug (1999). Escribir módulos de Apache con Perl y C: la API de Apache y Mod_perl. "O'Reilly Media, Inc.". ISBN 978-1-56592-567-0.
  126. ^ Bekman, Stas; Cholet, Eric (2003). Mod_perl práctico. "O'Reilly Media, Inc.". ISBN 978-0-596-00227-5.
  127. ^ Ingerson, Brian. "En línea - metacpan.org". CPAN . Archivado desde el original el 13 de junio de 2013 . Consultado el 26 de enero de 2011 .
  128. ^ Gilmore, WJ (2010). Principios de PHP y MySQL: de principiante a profesional, cuarta edición . Presione. pag. 484.ISBN _ 978-1-4302-3114-1.
  129. ^ "Servicio de asistencia de IMDb: ¿Qué software/hardware está utilizando para ejecutar el sitio?". Base de datos de películas de Internet . Archivado desde el original el 9 de marzo de 2017 . Consultado el 12 de febrero de 2011 .
  130. ^ DuckDuckGo maneja una gran cantidad de consultas de búsqueda: 4,5 millones de consultas por día. https://duckduckgo.com/traffic.html Archivado el 15 de febrero de 2012 en los archivos web de la Biblioteca del Congreso.
  131. ^ DuckDuckGo usa Perl https://web.archive.org/web/20101231135106/http://www.gabrielweinberg.com/blog/2009/03/duck-duck-go-architecture.html
  132. ^ "Preguntas frecuentes sobre Perl". Archivado desde el original el 6 de agosto de 2019 . Consultado el 6 de agosto de 2019 . Perl se utiliza bastante en Debian. No sólo algunas funciones principales están escritas en Perl, sino que hay más de 700 paquetes en inestable que tienen perl en su nombre (marzo de 2004).
  133. ^ "Libros de Perl - Libro: Mezcla de datos con Perl". Perl.org . Archivado desde el original el 7 de septiembre de 2011 . Consultado el 30 de diciembre de 2010 .
  134. ^ Descartes, caimán; Bunce, Tim (2000). Programación de Perl DBI: [programación de bases de datos con Perl] (1 ed.). Pekín [ua]: O'Reilly. ISBN 978-1-56592-699-8.
  135. ^ "Programación Perl: principios de los lenguajes de programación". sitios.google.com . Archivado desde el original el 8 de octubre de 2020 . Consultado el 18 de mayo de 2021 .
  136. ^ Bunce, Tim; Descartes, Alligator (4 de febrero de 2000). Programación del Perl DBI: Programación de bases de datos con Perl. "O'Reilly Media, Inc.". ISBN 978-1-4493-1536-8.
  137. ^ Bekman, Stas. "Trabajo eficiente con bases de datos bajo mod_perl". Archivado desde el original el 22 de agosto de 2007 . Consultado el 1 de septiembre de 2007 .
  138. ^ Pachev, Sasha (10 de abril de 2007). Comprensión de los aspectos internos de MySQL: descubrimiento y mejora de una gran base de datos. "O'Reilly Media, Inc.". ISBN 978-0-596-55280-0.
  139. ^ "Clase :: DBI - Abstracción de base de datos simple - metacpan.org". metacpan.org . Archivado desde el original el 6 de agosto de 2020 . Consultado el 8 de abril de 2020 .
  140. ^ "Rose::DB::Object - Mapeador relacional de objetos (ORM) extensible y de alto rendimiento. - metacpan.org". metacpan.org . Archivado desde el original el 6 de agosto de 2020 . Consultado el 8 de abril de 2020 .
  141. ^ "Referencia del desarrollador de consultas de T sql". pdfpremiumfree.com . Consultado el 18 de mayo de 2021 .
  142. ^ Wall, Larry (22 de mayo de 2014). "Cultura Perl (también conocida como el primer estado de la cebolla)". Archivado desde el original el 22 de mayo de 2014 . Consultado el 22 de mayo de 2014 .
  143. ^ Larry pared. "2º Estado de la Cebolla". Archivado desde el original el 17 de julio de 2012 . Consultado el 12 de octubre de 2012 .(Buscar 'iglesia')
  144. ^ Randal L. Schwartz (2 de mayo de 1999). "¿Quién es sólo otro hacker de Perl?". Grupo de noticias : comp.lang.perl.misc. Usenet:  [email protected]. Archivado desde el original el 8 de julio de 2012 . Consultado el 5 de diciembre de 2014 .
  145. ^ Schwartz, Randal (31 de marzo de 2005). "JAPH canónico". PerlMonks . Archivado desde el original el 22 de julio de 2011 . Consultado el 16 de mayo de 2011 .
  146. ^ Greg Bacon (28 de mayo de 1999). "Re: Incrementar un valor en un sector". Grupo de noticias : comp.lang.perl.misc. Usenet:  [email protected]. Archivado desde el original el 7 de julio de 2011 . Consultado el 12 de julio de 2011 .
  147. ^ Atrás, Adán. "RSA en 5 líneas de perl". Archivado desde el original el 19 de enero de 2011 . Consultado el 10 de enero de 2011 .
  148. ^ "Code Golf: ¿Qué es Code Golf?". 29 grados. 2007. Archivado desde el original el 13 de enero de 2012 . Consultado el 26 de noviembre de 2018 .
  149. ^ Gallo, Félix (2003). "El concurso Zeroth de Perl ofuscado" (PDF) . En Jon Orwant (ed.). Juegos, diversiones y cultura Perl: lo mejor de la revista Perl . Medios O'Reilly. Archivado desde el original (PDF) el 22 de noviembre de 2009 . Consultado el 12 de enero de 2011 .
  150. ^ "Poesía en Perl". PerlMonks . Archivado desde el original el 27 de septiembre de 2007 . Consultado el 27 de enero de 2011 .

Otras lecturas

enlaces externos