¡ El Perl es un lenguaje el de programación dinámico creado por la pared de Larry y primero lanzado en el 1987 . El Perl pide prestadas características de una variedad de otras idiomas incluyendo el C, Shell scripting ( sh), AWK, Sed y el balbucea .

Estructural, el Perl se basa en el estilo apoyar-delimitado del bloque de AWK y de C, y fue adoptado extensamente para sus fuerzas en el proceso de texto y la carencia de las limitaciones arbitrarias de muchas idiomas Scripting en ese entonces. ¡

Historia

La pared de Larry comenzó el trabajo sobre el Perl en 1987, mientras que trabajaba como un programador en el Unisys, y versión lanzada 1.0 al groupe informativo de comp.misc el el 18 de diciembre, 1987 . La lengua se amplió rápido durante los próximos años. El Perl 2, lanzado en 1988, ofreció un mejor motor de la expresión regular . El Perl 3, lanzado en 1989, ayuda agregada para los datos binarios fluye.

Hasta 1991, la única documentación para el Perl era una sola página de hombre (cada vez más muy largo) . ¡En 1991, que programa Perl minúsculo usado de la edición título; perl" --> (sabido a muchos programadores del Perl como el " Camello Book") fue publicado, e hizo la referencia de hecho del para la lengua. Al mismo tiempo, el número de versión del Perl fue topado a 4, para no marcar un cambio importante en la lengua, sino para identificar la versión que fue documentada por el libro.

El Perl 4 pasó con una serie de lanzamientos de mantenimiento, culminando en Perl 4. En ese punto, la pared de Larry abandonó Perl 4 para comenzar el trabajo sobre Perl 5.

El diseño inicial de Perl 5 continuó en 1994. El la lista de personas a quienes se mandan propaganda de perl5-porters fue establecido en mayo de 1994 para coordinar el trabajo sobre virar Perl hacia el lado de babor 5 a diversas plataformas. Sigue siendo el foro primario para el desarrollo, el mantenimiento, y virar hacia el lado de babor de Perl 5.

El Perl 5 fue lanzado el el 17 de octubre, 1994 . Era una reescritura casi completa del intérprete, y agregó muchas nuevas características a la lengua, incluyendo objetos, referencias, variables locales (las mis), y los módulos. Importantemente, los módulos proporcionaron un mecanismo para ampliar la lengua sin la modificación del intérprete. Esto permitió que el intérprete de la base se estabilizara, incluso durante permitió a programadores ordinarios del Perl agregar nuevas características de lengua.

El en fecha 2007, Perl 5 todavía se está manteniendo activamente. Las características importantes y algunas nuevas construcciones de lengua esenciales se han agregado a lo largo de la manera, incluyendo la ayuda de Unicode, los hilos de rosca, la ayuda mejorada para la programación orientada al objeto y muchos otros realces.

En 2007-12-18, el vigésimo aniversario de Perl 1.0 incluye las nuevas características notables, que lo traen más cercano a Perl 6, entre ellas una nueva declaración de interruptor (llamada " dado/when"), actualizaciones de las expresiones regulares, el " operator" elegante del fósforo; ~~, y más.

Uno de los acontecimientos más importantes de la historia del Perl 5 ocurrió fuera de la lengua apropiada, y era una consecuencia de su ayuda del módulo. El el el 26 de octubre, el 1995, la red comprensiva (CPAN) del archivo del Perl fue establecido como depósito para los módulos y Perl sí mismo del Perl. A la hora de la escritura, transporta 11.000 módulos cerca sobre 5. CPAN se mira extensamente como una de las fuerzas más grandes del Perl en la práctica.

Nombre

El Perl original fue nombrado " Pearl", después de la parábola de la perla del evangelio de Matthew . La pared de Larry quiso dar a la lengua un nombre corto con connotaciones positivas; él demanda que él consideraba (y rechazó) cada palabra de tres y de la cuatro-letra en el diccionario. Él también consideraba nombrarlo después de su esposa Gloria. Emparedar descubrió el lenguaje de programación de la PERLA existente antes del lanzamiento oficial del Perl y cambió el deletreo del nombre.

El nombre se capitaliza (Perl del ) al referir a la lengua y uncapitalized normalmente (Perl del ) al referir al programa de intérprete sí mismo puesto que Unix-como sistemas de ficheros ser con diferenciación entre mayúsculas y minúsculas. Antes de que el lanzamiento de la primera edición del que programaba Perl, él fuera común referir a la lengua como Perl del ; El Randal L. Schwartz, sin embargo, capitalizó el nombre de la lengua en el libro para hacer que se destaca mejor cuando estaba compuesto tipo. La distinción del caso fue adoptada posteriormente por la comunidad.

El nombre se da de vez en cuando como " PERL" (para el xtraction y el ractical L anguage del E P del eport del R de ). Aunque la extensión haya prevalecido en muchos de manuales de hoy, incluyendo la página de hombre del Perl del funcionario, es simplemente un Backronym . El nombre no representa oficialmente cualquier cosa, así que el deletreo que en todos los casquillos es incorrecto y que se considera un santo y seña (etiqueta de forasteros) en la comunidad del Perl. Varias otras extensiones se han sugerido, incluyendo propio Lister patológico ecléctico chistoso de los desperdicios del de la pared. De hecho, la pared demanda que el nombre fue pensado para inspirar muchas diversas extensiones.

El símbolo del camello

el que programa Perl, publicado por los medios de O'Reilly, ofrece un cuadro de un camello en la cubierta, y se refiere comúnmente como el libro del camello. O'Reilly permite el uso no comercial del símbolo, y proporciona la república programada del de las insignias y del del Perl accionados por los botones del Perl .

Descripción

El Perl es un lenguaje de programación de fines generales desarrollado original para la manipulación de texto y ahora usado para una amplia gama de tareas incluyendo la administración del sistema, el desarrollo del Web, la programación de red, el desarrollo del GUI, y más.

La lengua se piensa para ser práctica (fácil de utilizar, eficiente, completo) algo que hermosa (minúsculo, elegante, mínimo). Sus características importantes incluyen la ayuda para los paradigmas programados múltiples ( procesal, orientado al objeto, y estilos funcionales ), la referencia que cuenta la gerencia de memoria del sin un ciclo que detecta el colector de basura (el Devel-Ciclo se puede utilizar para eliminar errores de ciclos), la ayuda incorporada para el proceso de texto, y una colección grande de los módulos de tercera persona .

Características

La estructura total del Perl deriva del Perl de la C. es amplio procesal en naturaleza, con las expresiones de las variables, el apoyo - estructuras de control delimitadas de los bloques del código y subrutinas de las declaraciones de asignación

El Perl también toma características de la programación de la cáscara. Todas las variables se marcan con los sigils principales, que identifican inequívoco el tipo de datos (escalar, arsenal, picadillo, etc.) de la variable en contexto. Importantemente, los sigils permiten que las variables sean interpoladas directo en secuencias. El Perl tiene muchas funciones incorporadas que proporcionen las herramientas de uso frecuente en la cáscara que programa (muchas de estas herramientas son ejecutadas sin embargo por los programas externos a la cáscara) como la clasificación, e invitación de instalaciones del sistema.

El Perl toma listas que de balbucean, los órdenes asociativos (desmenuza) de AWK, y las expresiones regulares del sed. Éstos simplifican y facilitan muchos que analizan, el tratamiento de textos, y tareas de la gestión de datos.

En Perl 5, las características fueron agregadas que apoyan las funciones de primera clase (es decir, encierros de datos complejo de las estructuras como valores), y un modelo de la programación orientada al objeto. Éstos incluyen las referencias, los paquetes, envío clase-basado del método, y las variables léxico scoped, junto con los directorios (por ejemplo, el pragma del recopilador de strict). Una característica adicional importante introducida con Perl 5 era la capacidad de empaquetar código como módulos reutilizables. La pared de Larry indicó más adelante ese " El intento entero del sistema del módulo del Perl 5 era animar el crecimiento de la cultura del Perl algo que el Perl core."

Todas las versiones del Perl hacen a los datos automáticos que mecanografían y a gerencia de memoria. El intérprete sabe los requisitos del tipo y de almacenaje de cada objeto de datos en el programa; asigna y libera el almacenaje para ellos cuanto sea necesario. El tipo legal conversión-para el ejemplo, conversiones del número a secuencia-se hace automáticamente en el tiempo de pasada; el tipo conversiones ilegal es errores no recuperables.

Diseño

El diseño de Perl se puede entender como respuesta a tres tendencias amplias en la industria del ordenador: costes descendentes del hardware, costes laborales de levantamiento, y mejoras en tecnología del recopilador. Muchos lenguajes de programación anteriores, tales como FORTRAN y C, fueron diseñados para hacer uso eficiente del hardware costoso. En cambio, el Perl se diseña para hacer el uso eficiente de informáticos costosos.

El Perl tiene muchas características que faciliten la tarea del programador a expensas de mayores requisitos de la CPU y de memoria. Éstos incluyen a gerencia de memoria automática; que mecanografía dinámico; las secuencias, listas, y desmenuzan; expresiones regulares; la introspección y () un eval funcionan.

La pared fue entrenada como lingüista, y el diseño de Perl es mucho informado por principios lingüísticos. Los ejemplos incluyen la codificación de Huffman (las construcciones comunes deben ser cortas), la buena fin-carga (la información importante debe venir primero), y una colección grande de primitivos de la lengua. El Perl favorece las construcciones de lengua que son sucintas y naturales para que los seres humanos lean y escriban, incluso donde complican a intérprete de Perl.

El sintaxis del Perl refleja la idea que " las cosas que son diferentes deben mirar el different". Por ejemplo, los escalares, órdenes, y desmenuzan tienen diversos sigils principales . Poner en orden clases del uso de los índices y de las llaves del picadillo diversas de apoyos. Las secuencias y las expresiones regulares tienen diversos delimitadores estándar. Este acercamiento se puede poner en contraste con idiomas como balbucea el, donde la misma construcción de la S-expresión y sintaxis básico se utiliza para muchos diversos propósitos.

El Perl no hace cumplir ningún paradigma programado particular (procesal, orientado al objeto, funcional, etc.) o aún no requiere a programador elegir entre ellos.

Hay un doblado práctico amplio a la lengua del Perl y la comunidad y la cultura que la rodea. El prefacio al que programa Perl comienza, " El Perl es una lengua para conseguir su trabajo done." Una consecuencia de esto es que el Perl no es una lengua ordenada. Incluye muchas características, tolera excepciones a sus reglas, y emplea la heurística para resolver ambigüedades sintácticas. Debido a la naturaleza de perdón del recopilador, los insectos pueden a veces ser duros de encontrar. Discusión del comportamiento variable de funciones incorporadas en lista y contextos escalares, el perlfunc (1) la página manual dice el " Hacen generalmente lo que usted quiere, a menos que usted quiera consistency."

El Perl tiene varios lemas que transporten aspectos de su diseño y los utilicen. Uno es " del ; El allí es más que una forma para hacerlo . " (TIMTOWTDI, generalmente pronunciados “Tim Toady "). Otros son " del ; Perl: la motosierra suiza del ejército de programar Languages" y " del ; Ningún limits" innecesario; . Una meta indicada del diseño del Perl es hacer tareas fáciles las tareas fáciles y difíciles posibles. El Perl también se ha llamado " del ; La cinta del conducto del Internet" .

No hay especificación o estándar escrito para la lengua del Perl, y ningunos planes para crear uno para la versión actual del Perl. Ha habido solamente nunca una puesta en práctica del intérprete. Ese intérprete, junto con sus pruebas funcionales, se coloca como especificación de hecho del de la lengua.

Usos

El Perl tiene muchos y usos variados, compuestos por la disponibilidad de muchos módulos estándar y de tercera persona.

El Perl se ha utilizado desde los comienzos del Web para escribir las escrituras del cgi . Se conoce como uno de " los tres Ps" (junto con el pitón y PHP ), las idiomas dinámicas más populares para las aplicaciones web de la escritura (que ahora también incluyen el rubí ). Es también un componente integral del apilado popular de la solución de la LÁMPARA para el desarrollo de la tela. Los proyectos grandes escritos en el Perl incluyen la raya vertical, el Bugzilla, el TWiki y el tipo movible . Muchos los Web site del alto-tráfico, tales como Bbc.com utilizan el Perl extensivamente.

El Perl es de uso frecuente como lengua del pegamento, atando juntos los sistemas y los interfaces que no fueron diseñados específicamente para interoperar, y para el " munging" de los datos;, es decir, convirtiendo o procesando granes cantidades de datos para las tareas tener gusto de crear informes. De hecho, estas fuerzas se ligan íntimo. La combinación hace Perl una herramienta de uso múltiple popular para los administradores de sistema particularmente mientras que los programas se pueden incorporar brevemente y funcionamiento en una línea de solo comando.

Con un grado de cuidado, el código del Perl se puede hacer portable a través de Windows y de Unix. El código portable del Perl es de uso frecuente por los surtidores del software (ambas CHOZAS y anunciaron) simplificar el empaquetado y el mantenimiento de las escrituras de la estructura y del despliegue del software.

Los interfaces utilizador gráficos (GUI) se pueden desarrollar usar el Perl. Particularmente, Perl/Tk es de uso general permitir la interacción del usuario con las escrituras del Perl. Tal interacción puede ser síncrona o asincrónica usar los servicios repetidos para poner al día el GUI. Para más información sobre las tecnologías implicadas ver el Tk, el Tcl y el WxPerl .

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

Puesta en práctica

El Perl se ejecuta como intérprete de la base, escrito en C, junto con una colección grande de módulos, escrita en el Perl y la C. La distribución de la fuente está, el en fecha 2005, MB de 12 cuando está empaquetada en un archivo de alquitrán y el comprimió . El intérprete es 150.000 líneas de código de C y compila a un 1 MB ejecutable en arquitecturas típicas de la máquina. Alternativo, el intérprete puede ser compilado a una biblioteca de acoplamiento y ser encajado en otros programas. Hay casi 500 módulos en la distribución, abarcando 200.000 líneas del Perl y las 350.000 líneas adicionales de código de C. (Mucho del código de C en los módulos consiste en las tablas de la codificación del carácter.)

El intérprete tiene una arquitectura orientada al objeto. Todos los elementos del language&mdash del Perl; los escalares, órdenes, desmenuzan, los coderefs, handles&mdash del archivo; son representados en el intérprete por los structs de C. Las operaciones en estos structs son definidas por una colección grande de macros, de typedefs y de funciones; éstos constituyen el Perl C API. El Perl API puede ser desconcertante al uninitiated, pero sus puntos de entrada siguen un esquema de nombramiento constante, que proporciona la dirección a las que la utilicen.

La ejecución de un programa del Perl divide amplio en dos fases: de tiempo de compilación y run-time. En de tiempo de compilación, el intérprete analiza el texto del programa en un árbol del sintaxis. En el tiempo de pasada, ejecuta el programa caminando el árbol. El texto se analiza solamente una vez, y el árbol del sintaxis está conforme a la optimización antes de que se ejecute, así que la fase de ejecución es relativamente eficiente. Las optimizaciones de tiempo de compilación en el árbol del sintaxis incluyen el propagación plegable constante de y del contexto, pero la optimización del Peephole también se realiza. Sin embargo, las fases de tiempo de compilación y run-time pueden jerarquizar: los bloques del código de BEGIN ejecutan en de tiempo de compilación, mientras que la función de Eval del inicia la compilación durante tiempo de pasada. Ambas operaciones son una parte implícita de un número de otros-más notablemente, la cláusula de use que las bibliotecas de cargas, conocidas en el Perl como módulos, implican un bloque de BEGIN.

El Perl tiene una gramática sensible al contexto que se pueda afectar por el código ejecutado durante una fase run-time intermitente. Por lo tanto el Perl no se puede analizar por un recto Lex /el lexer de Yacc /la combinación del programa de análisis. En lugar, el intérprete ejecuta su propio lexer, que coordina con un programa de análisis modificado del bisonte del GNU para resolver ambigüedades en la lengua. Se dice que " solamente el Perl puede analizar Perl", significando que solamente el intérprete de Perl (Perl del ) puede analizar la lengua del Perl (Perl del ). La verdad de esto es atestiguada por a las imperfecciones persistentes de otros programas que emprendan analizar el Perl, tal como analizadores y los auto-penetradores del código fuente, que tienen que afirmar no sólo con las muchas maneras de expresar construcciones sintácticas inequívocas, pero también el hecho de que el Perl no se puede analizar en el caso general sin la ejecución de él. Sin embargo acertado en crear un programa de análisis del Perl para los propósitos relativos al documento, el proyecto de PPI determinó eso código del Perl del análisis como un documento (que conserva su integridad) y como código ejecutable era simultáneamente, de hecho, no posible. El autor demandó específicamente eso, " el Perl del análisis sufre del 'problema que para . '"

El Perl se distribuye con unas 120.000 pruebas funcionales. Éstos funcionados como parte del proceso normal de la estructura, y ejercitan extensivamente el intérprete y sus módulos de la base. Los reveladores del Perl confían en las pruebas funcionales para asegurarse de que los cambios al intérprete no introducen insectos; inversamente, los usuarios del Perl que ven a intérprete pasar sus pruebas funcionales en su sistema pueden tener un alto nivel de confianza que esté trabajando correctamente.

El mantenimiento del intérprete de Perl ha llegado a ser cada vez más difícil durante los años. La base del código ha estado en el desarrollo continuo desde 1994. El código se ha optimizado para el funcionamiento a expensas de simplicidad, de claridad, y de interfaces internos fuertes. Se han agregado las nuevas características, con todo la compatibilidad hacia atrás virtualmente completa con versiones anteriores se mantiene. El tamaño y la complejidad del intérprete es una barrera a los reveladores que desean trabajar en ella.

Disponibilidad

¡sentido de mantener una lista de lavadero este artículo. No enumerar una plataforma específica a menos que haya ediciones notables sobre el funcionamiento del Perl en él.

--el >Perl es el software libre, y se autoriza debajo de la licencia artística y de la licencia el público en general del GNU. Las distribuciones están disponibles para la mayoría de los sistemas operativos que es particularmente frecuente en el Unix y el Unix-como sistemas de, pero se ha virado hacia el lado de babor a las plataformas más modernas (y muchos obsoletos). Con solamente seises divulgó las excepciones, Perl puede ser compilado del código fuente en todos Unix-como, plataformas obedientes o de otra manera Unix-compatibles POSIX -. Sin embargo, esto es raramente necesario, pues el Perl se incluye en la instalación del defecto de muchos sistemas operativos populares.

Debido a los cambios inusuales requeridos para el ambiente clásico del OS del mac, un MacPerl llamado portuario especial fue enviado independiente.

El CPAN lleva una lista completa de plataformas apoyadas con acoplamientos a las distribuciones disponibles en cada uno.

Windows

Los usuarios Microsoft Windows instalan típicamente una de las distribuciones binarias nativas de Perl para Win32, lo más comúnmente posible ActivePerl . El Perl de compilación del código fuente bajo Windows es posible, pero la mayoría de las instalaciones carecen el compilador C indispensable y construyen las herramientas. Esto también hace duro instalar los módulos del CPAN, particularmente los que se escriban parcialmente en la C.

Los usuarios de la distribución binaria de ActivePerl son por lo tanto dependiente en los módulos empaquetados de nuevo proporcionados en depósito del módulo de s de ActiveState ', que se precompilan y se pueden instalar con el PPM . Los recursos limitados para mantener este depósito han sido causa para los varios problemas de muchos años.

Para abordar el y otros problemas del Perl en la plataforma de Windows, win32.org fue lanzado por Adán Kennedy a nombre de la fundación del Perl en junio de 2006. Esto es un Web site de la comunidad para el " todas las cosas Windows y Perl." Una puntería importante de este proyecto es proporcionar una distribución binaria alternativa de la producción-calidad que incluya las herramientas del recopilador y de la estructura del A., para permitir a los usuarios de Windows instalar los módulos directo del CPAN. Esta distribución se conoce como Perl de la fresa. Una distribución relacionada es Perl de la vainilla.

Otra manera de funcionar el Perl bajo Windows es proporcionada por la capa de la emulación de Cygwin . Cygwin proporciona a Unix-como el ambiente en Windows que incluya GCC, así que el Perl de compilación de la fuente es una opción más accesible para los usuarios que toman este acercamiento.

Estructura de la lengua

En el Perl, el programa mínimo del mundo hola puede ser escrito como sigue: lang=" del " de la impresión; ¡Hola, mundo! \ n" ¡Este imprime el de la secuencia hola, mundo! y un Newline, expresado simbólicamente por un carácter de n cuya interpretación es alterada por la barra precedente.

La forma canónica del programa es levemente más prolija:

lang=" del ¡! /usr/bin/perl " de la impresión; ¡Hola, mundo! \ n" ;

El carácter de la marca índice introduce un comentario en el Perl, que funciona hasta el extremo de la línea de código y es no hecho caso por el recopilador. El comentario usado aquí está de una clase especial: ha llamado la línea del shebang . Esto dice Unix-como sistemas operativos dónde encontrar al intérprete de Perl, permitiendo invocar el programa sin explícitamente mencionar perl. (La nota que en los sistemas de Microsoft Windows, Perl programa es invocada típicamente asociando la extensión de .pl al intérprete de Perl. Para ocuparse de tales circunstancias, perl detecta la línea del shebang y la analiza para los interruptores, así que no es terminantemente verdad que la línea del shebang es no hecha caso por el recopilador.)

La segunda línea en la forma canónica incluye un punto y coma, que se utiliza para separar declaraciones en el Perl. Con solamente una sola declaración en un bloque o un archivo, un separador es innecesario, así que puede ser omitido de la forma mínima del programa - o más generalmente de la declaración final en cualquier bloque o archivo. La forma canónica lo incluye porque es común terminar cada declaración incluso cuando es innecesario hacer así pues, como esto hace corregir más fácil: el código se puede agregar a o mover lejos del extremo de un bloque o de un archivo sin tener que ajustar puntos y comas.

Tipos de datos

El Perl tiene un número de tipos de datos del fundamental el más de uso general y discutido el ser: los escalares, de los órdenes desmenuzan, el Filehandles y las subrutinas :
Un escalar es un solo valor; puede ser un número, una secuencia o una referencia
Un arsenal es una colección pedida de escalares
Un picadillo, o el arsenal asociativo, es un mapa de secuencias a los escalares; las secuencias se llaman las llaves del y los escalares se llaman los valores del .
Una manija de archivo es un mapa a un archivo, a un dispositivo, o a una pipa que esté abierta para la lectura, la escritura, o ambas.
Una subrutina es un pedazo de código que se puede pasar las discusiones, ser ejecutado, y datos de la vuelta

La mayoría de las variables son marcadas por un sigil principal, que identifica el tipo de datos que es alcanzado (no el tipo de la variable sí mismo), excepto los filehandles, que no tienen un sigil. El mismo nombre se puede utilizar para las variables de diversos tipos de datos, sin conflicto.

lang=" del $foo # un escalar @foo # un arsenal %foo # un picadillo FOO # una manija o un constante de archivo &foo # una subrutina. (Y es opcional)

Las manijas de archivo y los constantes no necesitan ser mayúsculos, sino que es una convención común debido al hecho de que no hay sigil para denotarlos.8 al escalar se pueden utilizar como una manija de archivo, y usar esta característica se anima en mejores prácticas del Perl del de s de Conway Damián las '.

Los números se escriben en la forma pelada; las secuencias son incluidas por cotizaciones de varias clases.

lang=" del $name = " joe" ; $color = “rojo”;

$number1 = 42; $number2 = " 42" ;

que esto evalúa para verdad si ($number1 == $number2) {" de la impresión; ¡Los números y las cadenas de números son iguales! " ; }

$answer = " La respuesta es $number1" ; # interpolación variable: La respuesta es 42 $price = “este dispositivo cuesta $42”; # ninguna interpolación en apóstrofes

$album = " Es David Bowie \ " Héroes \ " " ; # cotizaciones del literal dentro de una secuencia; $album = 'él \ '" de s David Bowie \ “de s; Heroes" ”; # iguales que arriba con apóstrofes; $album = q (es " de David Bowie; Heroes"); # cotizar-como los operadores q () y el qq () permitir # casi cualquie delimitador en vez de cotizaciones, a # evitar backslashing excesivo

=<

El Perl convertirá secuencias en números y viceversa dependiendo del contexto en el cual se utilizan. En el ejemplo siguiente las secuencias $n y $m se tratan como números cuando son las discusiones al operador de la adición. Este código imprime el número “5”, desechando no la información del número para la operación, aunque los valores variables sigan siendo iguales. (El operador de encadenamiento de la secuencia es no +, sino .)

lang=" del $n = " apples" 3; ; $m = " oranges" 2; ; impresión $n + $m;

El Perl también tiene un contexto boleano que utilice en la evaluación de declaraciones condicionales. Los valores siguientes todos evalúan como falso en el Perl:

lang=" del $false = 0; # el número cero $false = 0.0; # el número cero como flotador $false = 0b0; # el número pone a cero adentro el binario $false = 0x0; # el número pone a cero adentro hexadecimal $false = “0”; # la secuencia cero $false = " " ; # la secuencia vacía $false = undef; # el valor de vuelta del undef

El resto de los valores se evalúan para verdad. Esto incluye la secuencia literal self-describing impar del " 0 pero true", que de hecho es 0 como número, pero verdad cuando está utilizado como boleano. (Cualquier secuencia no numérica también tendría esta característica, pero esta secuencia particular es no hecha caso por el Perl con respecto a advertencias numéricas.) Una versión menos explícita pero más conceptual portable de esta secuencia es “0E0” o “0e0”, que no confían en los carácteres que son evaluados como 0, como “0E0” es literalmente " épocas cero diez al zeroth power."

Las expresiones boleanas evaluadas también vuelven valores escalares. Aunque la documentación no prometa que qué verdad particulares o falso se vuelve (y no puede ser confiado así encendido), la vuelta 1 de muchos operadores boleanos para verdad y la vacío-secuencia para falso (cuál evalúa para poner a cero adentro un contexto numérico). () La función definida de dice si la variable tiene algún valor fijado. En el antedicho de los ejemplos ($false) definido es verdad para cada valor excepto el undef del .

Si una específicamente conversión explícita del resultado 1 o 0 (como en C) es necesario, es pensado por algunos autores que se requerirán:

lang=" del ¿mi $real_result = $boolean_result? 1: 0;

Sin embargo, si ha sabido que el valor es 1 o el undef del, una conversión implícita se puede utilizar en lugar de otro:

lang=" del mi $real_result = $boolean_result + 0;

Una lista es escrita enumerando sus elementos, separada por comas, e incluida por paréntesis donde se requiera por precedencia de operador.

lang=" del @scores = (32, 45, 16, 5);

Puede ser escrito muchas otras maneras también, algún directo y algo menos tan:

lang=" del Una manera explícita y directa @scores = (“32”, “45”, “16”, “5”);

equivalente al antedicho, pero al qw () cotizar-como operador ahorra mecanografiar del

  • las cotizaciones y las comas y reducen alboroto visual; casi cualquier delimitador puede ser
  • utilizado en vez de paréntesis @scores = qw (32 45 16 5);

    la función de la fractura devuelve una lista de secuencias, que son

  • extraído de la expresión usar una plantilla del regex.
  • Esto puede ser útil para leer en un archivo de los valores coma-separados (CSV) los @scores = partieron/,/, “32.5”;

    es también posible utilizar un posfijo para el operador y el alias del

  • la variable mágica del _ de $ al valor siguiente de la lista durante cada
  • iteración; esto es insustancial aquí, pero los idiomas similares son
  • ampliamente utilizado en algunas circunstancias. empujar los @scores, $ de foreach 32, 45, 16, 5 del _;

    Un picadillo se puede inicializar de una lista de pares de la llave/del valor:

    lang=" del %favorite = ( => “rojo” de Joe, => “azul” de sam );

    El operador de => es equivalente a una coma, salvo que asume cotizaciones alrededor del símbolo precedente si es un identificador pelado: (el => “") rojo de Joe es igual que el (“Joe” => “") rojo. Puede por lo tanto ser utilizado para elide las marcas de la cotización, mejorando legibilidad.

    Los elementos individuales de una lista son alcanzados proporcionando un índice numérico, en corchetes. Los valores individuales en un picadillo son alcanzados proporcionando la llave correspondiente, en apoyos rizados. El sigil de $ identifica el elemento alcanzado como escalar.

    lang=" del $scores # un elemento de @scores $favorite {Joe} # un valor en %favorite

    Así, un picadillo puede también ser especificado fijando sus llaves individualmente:

    lang=" del $favorite {Joe} = “rojo”; $favorite {sam} = “azul”;

    Los elementos múltiples pueden ser alcanzados usando el sigil de @ en lugar de otro (identificando el resultado como lista).

    lang=" del @scores 3, 1 # tres elementos de @scores @favorite {“Joe”, “sam”} # dos valores en %favorite @favorite {qw (Joe sam)} # iguales que arriba

    El número de elementos en un arsenal puede ser obtenido evaluando el arsenal en contexto escalar o con la ayuda del sigil de $#. Este 3ultimo da el índice del elemento pasado en el arsenal, no el número de elementos.

    lang=" del $count = @friends; # la asignación a un escalar fuerza contexto escalar

    esta notación se desalienta a veces, porque tiende el

  • para ser confundido con comentarios.

    $#friends; # el índice del elemento pasado en @friends $#friends+1; # el número de elementos en @friends es generalmente uno más # que $#friends porque el primer elemento está en el índice 0, # no 1, a menos que el programador reajustara esto a un diferente # valor, que la mayoría de los manuales del Perl desalientan.

    Hay algunas funciones que funcionan encendido entero desmenuzan.

    lang=" del @names = llaves %addressbook; @addresses = valores %addressbook;

    cada llamada a cada uno vuelve los pares siguientes de la llave/del valor.

  • Todos los valores serán vueltos eventual, menos su
  • de la orden no puede ser predicho. mientras que (($name, $address) = cada %addressbook) { imprimir el " vidas de $name en $address \ el n" ; }

    similar alfabéticamente al antedicho, pero clasificado foreach mi $next_name (claves de ordenación %addressbook) { " de la impresión; $next_name vive en $addressbook {} \ n" de $next_name; ; }

    Estructuras de control

    considera también:

    las estructuras de control del Perl

    El Perl tiene varias clases de estructuras de control.

    Tiene estructuras de control block-oriented, similares a ésas en la C, el Javascript, y los lenguajes de programación de Java . Las condiciones son rodeadas por paréntesis, y los bloques de gestión son rodeados por los apoyos:

    etiqueta del mientras que (cond del ) {…} etiqueta del mientras que (el cond del ) {…} continuar {…} etiqueta del para (init-expr del ; cond-expr del ; aumento-expr del ) {…} var (lista del foreach de la etiqueta ) {…} el var (lista del foreach de la etiqueta ) {…} continúa {…} si (cond del ) {…} si (cond del ) {…} {…} si (cond del ) {…} elsif (cond del ) {…} {…}

    Donde solamente está estando controlada una sola declaración, los modificantes de la declaración proporcionan un sintaxis más sucinto:

    declaración del si cond del ; declaración del a menos que cond del ; declaración del mientras que cond del ; declaración del hasta el cond del ; lista foreach de la declaración del ;

    Los operadores lógicos del cortocircuito son de uso general afectar a flujo de control en el nivel de la expresión:

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

    (El " and" y " or" los operadores son similares al && y al || pero tienen precedencia más baja, que hace más fácil utilizarlos para controlar declaraciones enteras.)

    Las palabras claves next (que corresponde a continue de la c), last (que corresponde a break de la c), return, y redo son expresiones, así que ellas del control de flujo se pueden utilizar con los operadores del cortocircuito.

    El Perl también tiene dos construcciones de colocación implícitas, que tiene dos formas:

    el resulta la lista del de = del grep {…} el resulta el expr, lista del de = del grep del el resulta = la lista mapa {…} el resulta = el expr, lista mapa del

    grep vuelve todos los elementos de la lista del para los cuales el bloque de gestión o la expresión evalúe para verdad. map evalúa el bloque de gestión o la expresión para cada elemento de la lista del y devuelve una lista de los valores resultantes. Estas construcciones permiten un estilo simple de la programación funcional .

    Encima de hasta que el lanzamiento 5.0, allí no fuera ninguna declaración de interruptor en Perl 5.0 hacia adelante, una declaración de la rama de la multi-manera llamada given/when está disponible, que toma la forma siguiente:

    dado (expr del ) {cuando (cond del ) {…} defecto {…}}

    Sintácticamente, esta estructura se comporta semejantemente a la declaración de interruptor 's encontrada en otras idiomas, pero con algunas diferencias importantes. El más grande es ése las estructuras desemejantes del interruptor/del caso, dadas/cuando las declaraciones rompen la ejecución después de la primera rama acertada, algo que para comandos de rotura explícitamente definidos que esperan. Inversamente, explícito continúa son en lugar de otro necesario emular a comportamiento del interruptor.

    Para ésas no usar el lanzamiento 5.0, la documentación del Perl describe una media docena maneras de alcanzar el mismo efecto usando otras estructuras de control. Hay también un módulo de interruptor, que proporciona la funcionalidad modelada en el reajuste próximo del Perl 6 .

    El Perl incluye una declaración del goto label, pero se utiliza raramente. Las situaciones donde un goto se pide en otras idiomas no ocurren como a menudo en el Perl debido a su anchura de las opciones del control de flujo.

    Hay también una declaración del goto &sub que realiza una llamada de la cola. Termina la subrutina actual y llama inmediatamente el submarino especificado del del . Esto se utiliza en las situaciones donde un llamador puede realizar una gerencia más eficiente del apilado que Perl sí mismo (típicamente porque no se requiere ningún cambio al apilado actual), y en cola profunda de la repetición la llamada puede tener impacto positivo substancial en funcionamiento porque evita los gastos indirectos de la gerencia del alcance/del apilado en vuelta.

    Subrutinas

    Las subrutinas se definen con la palabra clave de sub, y son invocadas simplemente nombrándolas. Si la subrutina en la pregunta todavía no se ha declarado, la invocación requiere paréntesis después del nombre de función o un signo "&" ( y ) antes de ella.

    lang=" del Llamada de una subrutina Paréntesis del

    se requieren aquí si la subrutina se define más adelante en el código foo (); &foo; # (esto también trabaja)

    que define una subrutina foo secundario {…}

    foo; # aquí paréntesis no se requieren

    Una lista de discusiones se puede proporcionar después del nombre de la subrutina. Las discusiones pueden ser escalares, listas, o desmenuzan.

    foo $x, @y, %z;

    Los parámetros a una subrutina no necesitan ser declarados en cuanto a número o tipo; de hecho, pueden variar de llamada a la llamada. Cualquier validación de parámetros se debe realizar explícitamente dentro de la subrutina.

    Los órdenes se amplían a sus elementos, desmenuzan se amplían a una lista de pares de la llave/del valor, y la porción entera se pasa en la subrutina como una lista plana de escalares.

    Se pasan cualesquiera discusiones estar disponible para la subrutina en el arsenal especial @_. Los elementos de @_ aliased a las discusiones reales; el cambio de un elemento de @_ cambia la discusión correspondiente.

    Los elementos de @_ se pueden alcanzar por la subindicación él de la manera habitual.

    lang=" del $_, $_

    Sin embargo, el código resultante puede ser difícil de leer, y los parámetros tienen semántica de la pasar-por-referencia, que puede ser indeseable.

    Un idioma común es asignar @_ a una lista de variables nombradas.

    lang=" del mi ($x, $y, $z) = @_;

    Esto proporciona los nombres de parámetro mnemónicos y ejecuta la semántica del pasar-por-valor . La palabra clave de my indica que las variables siguientes scoped léxico al bloque que contiene.

    Otro idioma es cambiar de puesto parámetros apagado de @_. Esto es especialmente común cuando la subrutina toma solamente una discusión, o para manejar la discusión de $self en módulos orientados al objeto.

    lang=" del mi $x = cambio;

    Las subrutinas pueden asignar @_ a un picadillo para simular discusiones nombradas; esto se recomienda en las mejores prácticas del Perl del para las subrutinas que son probables nunca tener más de tres parámetros.

    lang=" del function1 secundarios { mi %args = @_; " de la impresión; “x” discusión era “” \ n" de $args {x}; ; } function1 (=> 23 de x);

    Las subrutinas pueden volver valores.

    lang=" del volver 42, $x, @y, %z;

    Si la subrutina no sale vía una declaración de return, después vuelve la expresión pasada evaluada dentro del cuerpo de la subrutina. Los órdenes y desmenuzan en el valor de vuelta se amplían a las listas de escalares, apenas pues están para las discusiones.

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

    lang=" del lista secundaria {(4, 5, 6)} arsenal secundario {@x = (4, 5, 6); @x}

    $x = lista; # vuelve 6 - elemento pasado de la lista $x = arsenal; # vuelve 3 - número de elementos en lista @x = lista; # vuelve (4, 5, 6) @x = arsenal; # vuelve (4, 5, 6)

    Una subrutina puede descubrir su contexto de llamada con la función de wantarray.

    lang=" del sub cualquiera { ¿volver wantarray? (1, 2): " Oranges" ; }

    $x = cualquiera; # " de las vueltas; Oranges" @x = cualquiera; # vuelve (1, 2)

    Expresiones regulares

    La lengua del Perl incluye un sintaxis especializado para las expresiones regulares de la escritura (CON REFERENCIA A, o los regexes), y el intérprete contiene un motor para las secuencias que emparejan a las expresiones regulares. El motor de la expresión regular utiliza un algoritmo de la vuelta hacia atrás, ampliando sus capacidades de la adaptación de modelos simple a la captura y a la substitución de la secuencia. El motor de la expresión regular se deriva del regex escrito por la chaqueta de punto de Henry.

    El sintaxis de la expresión regular del Perl fue tomado original de expresiones regulares de la versión 8 de Unix. Sin embargo, divergió antes de que el primer lanzamiento del Perl, y ha venido desde entonces incluye muchas más características. Otras idiomas y usos ahora están adoptando las expresiones regulares compatibles del Perl sobre expresiones regulares POSIX incluyendo PHP, el rubí, el Java, el marco .NET de Microsoft, y el servidor de HTTP de Apache .

    El sintaxis de la expresión regular es extremadamente compacto, debido a historia. Los primeros dialectos de la expresión regular eran solamente levemente más expresivos que los globs, y el sintaxis fue diseñado de modo que una expresión se asemejara al texto que empareja. Esto significada usar no más que un solo carácter de puntuación o un par de carácteres de delimitación para expresar el pocos apoyó aserciones. En un cierto plazo, la expresividad de expresiones regulares creció enormemente, pero el diseño del sintaxis nunca fue revisado y continúa confiando en la puntuación. Consecuentemente, las expresiones regulares pueden ser secretas y extremadamente densas.

    Aplicaciones

    El operador de m// (fósforo) introduce un fósforo de la expresión regular. (Si usted utiliza rayas verticales como delimitadores, como en todos los ejemplos aquí, después el m principal puede ser omitido para la brevedad.) En el caso más simple, una expresión tiene gusto

    lang=" del =~ m/abc/de $x

    evalúa para verdad el si y solamente si la secuencia $x empareja la expresión regular abc.

    El operador (substituto) de s///, por una parte, especifica una búsqueda y substituye la operación:

    lang=" del =~ s/abc/aBc/de $x; # upcase el b

    Otro uso de expresiones regulares es especificar los delimitadores para la función de split:

    lang=" del los @words = partieron,/, del m $line;

    La función de split crea una lista de las partes de la secuencia separada por los fósforos de la expresión regular. En este ejemplo, una línea se divide en una lista de sus piezas coma-separadas, y esta lista entonces se asigna al arsenal de @words.

    Sintaxis

    Las porciones de una expresión regular se pueden incluir entre paréntesis; las porciones correspondientes de una secuencia que empareja son capturados . Las secuencias capturadas se asignan a las variables incorporadas secuenciales $1, $2, $3,… , y una lista de secuencias capturadas se devuelve como el valor del fósforo.

    lang=" del =~ m/a de $x (.)c; # captura el carácter entre “a” y “c”

    Las expresiones regulares del Perl pueden tomar los modificantes del . Éstos son los sufijos single-letter que modifican el significado de la expresión:

    lang=" del =~ m/abc/i de $x; # fósforo sin diferenciación entre mayúsculas y minúsculas del patrón =~ s/abc/aBc/g de $x; # la búsqueda global y substituye

    Puesto que las expresiones regulares pueden ser densas y secretas debido a su sintaxis compacto, el modificante de /x fue agregado en el Perl para ayudar a programadores a escribir expresiones regulares más legibles. Permite que los programadores pongan el whitespace y comenta dentro de expresiones regulares de :

    lang=" del =~ de $x m/a # fósforo “a” . # seguido por cualquie carácter c # entonces seguido por el 'c'character /x;

    Interfaces de base de datos

    El Perl se favorece extensamente para los usos de base de datos. Sus instalaciones del tratamiento de textos son útiles para generar preguntas del SQL ; los órdenes, desmenuzan y la gerencia de memoria automática hace fácil recoger y procesar los datos devueltos.

    En versiones tempranas del Perl, los interfaces de base de datos fueron creados reconectando al intérprete con una biblioteca de la base de datos del cliente-lado. Esto era suficientemente difícil que fue hecha solamente para algunas de las bases de datos más importantes y más ampliamente utilizadas, y restringió el perl resultante ejecutable a usar apenas un interfaz de base de datos a la vez.

    En Perl 5, los interfaces de base de datos son ejecutados por los módulos del Perl DBI . El módulo de DBI (interfaz de base de datos) presenta un solo, interfaz de la base de datos-independiente a los usos del Perl, mientras que los módulos de DBD (conductor de la base de datos) manejan los detalles de tener acceso unas 50 diversas bases de datos; hay conductores de DBD para la mayoría de las bases de datos del SQL del ANSI .

    DBI proporciona la puesta en antememoria para las manijas de la base de datos y las preguntas, que pueden mejorar grandemente funcionamiento en ambientes duraderos de la ejecución tales como Mod_perl, ayudando a sistemas en grandes cantidades evitan puntos de la carga como en el efecto de Slashdot.

    Funcionamiento comparativo

    El el lenguaje de programación evalúa el juego compara el funcionamiento de puestas en práctica de problemas programados típicos en varios lenguajes de programación. Las puestas en práctica sometidas del Perl estaban típicamente hacia las partes altas del espectro del uso de la memoria, y habían variado resultados de la velocidad. El funcionamiento del Perl en el juego de las pruebas patrones es similar a otras idiomas interpretadas tales como pitón, más rápidamente que el PHP, y perceptiblemente más rápidamente que rubí, pero más lento que la mayoría las idiomas compiladas.

    Los programas del Perl pueden comenzar más lentamente los programas que similares en idiomas compiladas porque el Perl tiene que compilar la fuente cada vez él funcionan. En una charla en el YAPC:: Conferencia y artículo subsecuente, " de Europa 2005 ; Un Start" oportuno;, Jean-Louis Leroy encontró que sus programas del Perl llevaron mucho más de largo el funcionamiento que él esperó porque el intérprete de Perl pasó mucho del tiempo que encontraba que los módulos debido a su over-large incluyen la trayectoria. Porque el precompilar sigue siendo una parte experimental de Perl - desemejante de el de Java, del pitón, y del rubí - los programas del Perl pagan esta pena de arriba en cada ejecución. Cuando el amortizó durante una fase duradera, el tiempo de lanzamiento no es típicamente substancial, pero la medida de los tiempos de ejecución muy cortos puede ser sesgada a menudo como se encuentra a menudo en pruebas patrones.

    Un número de herramientas se han introducido para mejorar esta situación, la primera cuyo era el Mod_perl de Apache, que intentó tratar una de las razones mas comunes que los pequeños programas del Perl fueron invocados rápido: Desarrollo del Web del cgi . El ActivePerl, vía el ISAPI de Microsoft proporciona mejoras similares del funcionamiento.

    Optimización

    Los programas del Perl, como cualquier código, pueden ser templado para el funcionamiento usar las pruebas patrones y el perfila después de un legible y la puesta en práctica correcta es finished. En parte debido a la naturaleza interpretada del Perl, la escritura del Perl más-eficiente no estará siempre bastante para resolver sus metas de funcionamiento para un programa.

    En tales situaciones, las rutinas más críticas de un programa del Perl se pueden escribir en otras idiomas tales como C o ensamblador, que se pueden conectar con el Perl vía los módulos en línea simples o el mecanismo más complejo pero más flexible XS . Nicholas Clark, revelador de la base del Perl, discute algunas compensaciones de diseño del Perl y algunas soluciones en cuando el Perl no es bastante absolutamente rápido.

    En casos extremos, el Perl óptimo puede requerir el conocimiento íntimo de los funcionamientos del intérprete algo que habilidad con algoritmos, la lengua del Perl, o principios generales de optimización.

    Futuro

    considera también:

    l Perl 6 En la conferencia 2000 del Perl, Jon Orwant hizo un caso para una nueva iniciativa importante de la lengua. Esto llevó a una decisión para comenzar el trabajo sobre un reajuste de la lengua, ser llamado las ofertas del Perl 6. para las nuevas características de lengua fueron solicitados de la comunidad del Perl at large, y sobre 300 el RFCs fueron sometidos.

    La pared de Larry pasó a próximos años que digerían el RFCs y que los sintetizaban en un marco coherente para Perl 6. Él ha presentado su diseño para Perl 6 en una serie de los documentos llamados " apocalypses", que se numeran para corresponder a los capítulos en el que programa Perl (" El camello Book"). La corriente, especificación no todavía concluida de Perl 6 se encapsula en los documentos del diseño llamados Synopses, que se numeran para corresponder a las apocalipsis.

    El Perl 6 no se piensa para ser posterior - compatible, aunque habrá un modo de compatibilidad.

    En el 2001, era decidido que el Perl 6 funcionaría en una máquina virtual en las diferentes lenguas llamada el loro . Esto significará que otras idiomas que apuntan el loro tendrán el acceso nativo al CPAN, permitiendo un cierto nivel de desarrollo en las diferentes lenguas.

    En la espiga de Audrey 2005 creó el proyecto de los barros amasados, una puesta en práctica de Perl 6 en el Haskell . Esto debía y continúa actuar como plataforma de la prueba para la lengua del Perl 6 (a parte del desarrollo de la puesta en práctica real) que permitía que los diseñadores de la lengua exploren. Los barros amasados proyectan frezaron a comunidad en las diferentes lenguas activa del Perl/de Haskell centrada alrededor del canal del IRC de Freenode #perl6.

    Un número de características en la lengua del Perl 6 ahora demuestran semejanzas con Haskell, y el Perl 6 ha sido abrazado por la comunidad de Haskell como lengua scripting potencial.

    El en fecha 2006, Perl 6, loro, y los barros amasados están en el desarrollo activo, y un nuevo módulo para Perl 5 llamó el v6 permite que un cierto código del Perl 6 funcione directo encima de Perl 5.

    En 2006, un esfuerzo fue comenzado para tener nave de las distribuciones del Perl de Windows con un recopilador, para hacer la necesidad de paquetes binarios en Windows redundante. Algunos los resultados tempranos de esto incluyen el Perl del macro-instalador y de la vainilla de CamelPack y el Perl de la fresa.

    El desarrollo de Perl 5 también está continuando.10 fue lanzado en diciembre de 2007, con algunas nuevas características influenciadas por el diseño de Perl 6.

    La comunidad del Perl

    La cultura y la comunidad del Perl se ha convertido junto a la lengua sí mismo. El USENET era el primer lugar público en el cual el Perl fue introducido, pero sobre el curso de su evolución, el crecimiento de ensanchar formó a la comunidad del Perl servicios Internet-basados incluyendo la introducción del World Wide Web. La comunidad que rodea el Perl era, de hecho, el asunto " de la pared de Larry del primer; Estado del Onion" charla.

    Estado de la cebolla

    El estado de la cebolla es el nombre para la nota tónica anual - resúmenes de la pared de Larry del estilo en el progreso del Perl y de su comunidad. Son caracterizados por su humor del sello, empleando referencias a los Perl y a la cría más ancha del pirata informático, así como la pared lingüística y a veces su fondo cristiano.

    Cada charla es primera dada en las varias conferencias del Perl y también publicada eventual en línea.

    Pasatiempos

    Los pasatiempos del Perl se han convertido en un elemento de definición de la comunidad. Se incluyen entre ellos las aplicaciones triviales y complejas de la lengua.

    JAPHs

    En email, fijaciones del tablero del USENET y de mensaje, " apenas otro " del pirata informático del Perl; Los programas (JAPH) se han convertido en una tendencia común, originada por el Randal L. Schwartz, uno de los amaestradores más tempranos del Perl del profesional.

    En el lenguaje de la cultura del Perl, los programadores del Perl se conocen como piratas informáticos del Perl, y de esto derivan la práctica de los programas del cortocircuito de la escritura de imprimir el " de la frase; apenas otro pirata informático, " del Perl;. En el alcohol del concepto original, estos programas son ofuscados moderado y bastante cortos para caber en la firma de un email o de un mensaje del USENET. El " canonical" JAPH incluye la coma en el extremo, aunque esto se omita a menudo.

    Golf del Perl

    " del Perl; golf" es el pasatiempo de reducir el número de carácteres usados en un programa del Perl al mínimo pelado, mucho como cómo los jugadores del golf intentan tomar como pocos tiros como sea posible en un redondo. Este uso del " de la palabra; golf" centrado original en el JAPHs usado en firmas en fijaciones del USENET y a otra parte, aunque los mismos trucos habían sido un pasatiempo innomado en el APL de la lengua en décadas anteriores. El uso del Perl de escribir un programa que realizó la encripción del RSA incitó un interés extenso y práctico en este pasatiempo. En años subsecuentes, el golf del código se ha tomado como pasatiempo en otras idiomas además del Perl.

    Ofuscación

    Como con C, las competiciones ofuscadas del código son un pasatiempo bien conocido. La competencia ofuscada anual del Perl hizo una virtud del arco de la flexibilidad sintáctica del Perl.

    Poesía

    Similar al código y al golf ofuscados, pero con un diverso propósito, la poesía del Perl es la práctica de los poemas de la escritura que se pueden compilar realmente como (aunque generalmente sea absurdo) código legal del Perl. Esta manía es más o menos única al Perl debido al gran número de palabras inglesas regulares usadas en la lengua. Los nuevos poemas se publican regularmente en la sección de la poesía del Perl del Perl del sitio de los monjes .

    Cumbre de CPAN

    Hay también muchos ejemplos del código escritos puramente para la hospitalidad en el CPAN. Lingua:: Romana:: Perligata, por ejemplo, permite programas de la escritura en el latino. Sobre la ejecución de tal programa, el módulo traduce su código fuente al Perl regular y lo funciona.

    La comunidad del Perl ha puesto el " a un lado; " de la cumbre ; el namespace para los módulos que son diversión en naturaleza (solamente su alcance ha ensanchado para incluir código exploratorio o experimental o cualquier otro módulo que no se signifique para ser utilizado nunca en la producción). Algunos de los módulos de la cumbre se ejecutan deliberadamente de maneras graciosamente. Esto incluye el Acme:: Bleach, uno de los primeros módulos en el Acme:: namespace de , que permite que el código fuente del programa sea " whitened" (es decir, todos los carácteres substituidos por el whitespace) pero todavía trabajar.

    Éstos son también ejemplos del " filters" de la fuente; ; bibliotecas que transforman el texto de un programa antes de la lectura él.

    Lectura adicional

    que aprende Perl, cuarta edición (el libro ), ISBN 0-596-10105-8 de la llama del
    libro de cocina, ISBN 0-596-00313-7 del Perl
    que programa Perl, (el libro del camello del ), ISBN 0-596-00027-8
  • Ver también


    la fundación del Perl
    Instrucción del Perl en Wikiversity - usted puede utilizar el entrenamiento y/o ayudar a agregar a él
    El ambiente (POE) - un marco del objeto del Perl para los ambientes orientados al objeto persistentes de la escritura con acontecimiento coloca
    Programación de datos del Perl (PDL) - un módulo del Perl que permite el extender del Perl para el proceso científico higher-order.
    Documentación llana (VAINA) - una herramienta vieja de la documentación para el Perl.
    apenas otro pirata informático (JAPH) del Perl
    Monjes del Perl
    Tratantes del Perl
    PerlScript
    Perl 6
    Comparación de los lenguajes de programación
    Autovivification

    .

  • Zenithic
  • Perl
    Random links:Locost | Eugen Jochum | Prima del cubano | Lista de líderes estatales en 1386 | Castillo de Guimarães

  • © 2007-2008 enciclopediaespana.com; article text available under the terms of GFDL, from en.wikipedia.org
    ="http://pagead2.googlesyndication.com/pagead/show_ads.js">