Perl
{{Ficha de software}}

'''Perl''' ye un [[llinguaxe de programación]] diseñáu por [[Larry Wall]] en [[1987]]. Perl toma carauterístiques del llinguaxe [[C (llinguaxe de programación)|C]], del llinguaxe interpretáu bourne shell ([[Bourne Shell|sh]]), [[AWK]], [[sei (informática)|sei]], [[Lisp]] y, nun grau inferior, de munchos otros llinguaxes de programación.

Estructuralmente, Perl ta basáu nun estilu de bloques como los del C o AWK, y foi llargamente adoptáu pola so maña nel procesáu de testu y nun tener nenguna de les llimitaciones de los otros llinguaxes de [[script]].

== Historia ==
Larry Wall empezó a trabayar en Perl en [[1987]] mientres trabayaba como programador en [[Unisys]]<ref name="larry-wall-snippet">{{cita web|títulu=Larry Wall|url=http://www.perl.com/pub/au/Wall_Larry|fechaaccesu=20 d'agostu de 2006|urlarchivu=https://web.archive.org/web/20060815160146/http://www.perl.com/pub/au/Wall_Larry|fechaarchivu=15 d'agostu de 2006}} (inglés)</ref> y anunció la versión 1.0 nel [[newsgroup|grupu de noticies]] comp.sources.misc el [[18 d'avientu]] de 1987. El llinguaxe espandióse rápido nos siguientes años. Perl 2, publicáu en [[1988]], apurrió un meyor motor d'espresiones regulares. Perl 3, publicáu en [[1989]], añadió soporte pa datos binarios.

Hasta [[1991]] la única documentación de Perl yera una simple (y cada vez más llarga) páxina de manual Unix. En 1991 publicóse ''[[Programming
Perl]]'' (el llibru del [[Camelus dromedarius|camellu]]) y convirtióse na referencia ''de facto'' del llinguaxe. Coles mesmes, el númberu de versión de Perl saltó a 4, non por marcar un gran cambéu nel llinguaxe, sinón por identificar a la versión que taba documentada nel llibru.

Perl 4 traxo consigo una serie de llanzamientos de caltenimientu, rematando en Perl 4.036 en 1993. Nesti puntu, Larry Wall abandonó Perl 4 pa empezar a trabayar en Perl 5. Perl 4 quedar nesa versión hasta güei.

El desenvolvimientu de Perl 5 siguió en [[1994]]. La llista de corréu ''perl5-porters'' establecer en mayu de 1994 pa coordinar el trabayu d'adautación de Perl 5 a distintes plataformes. Ye'l primer foru pa desenvolvimientu, caltenimientu y adautación de Perl 5.

Perl 5 foi publicáu'l [[17 d'ochobre]] de 1994. Foi casi una completa reescritura del [[intérprete (informática)|intérprete]] y añadió munches nueves carauterístiques al llinguaxe, incluyendo oxetos, referencies, paquetes y módulos. A destacar, los módulos aproven d'un mecanismu pa estender el llinguaxe ensin modificar l'intérprete. Esto dexó estabilizar el so nucleu principal, amás de dexar a los programadores de Perl añader nueves carauterístiques.

El [[26 d'ochobre]] de [[1995]], creóse'l ''Comprehensive Perl Archive Network'' (CPAN). [[CPAN]] ye una coleición de sitio web qu'almacenen y distribúin fontes en Perl, binarios, documentación, scripts y módulos. Orixinalmente, cada sitiu CPAN tenía de ser aportáu al traviés de la so propiu URL; anguaño, [http://www.cpan.org http://www.cpan.org] redirecciona automáticamente a unu de los cientos de repositorios espeyu de CPAN.

En [[2008]], Perl 5 sigue siendo calteníu. Carauterístiques importantes y delles construcciones esenciales fueron añadíes, incluyendo soporte [[Unicode]], [[Filo (informática)|filos]], un soporte importante pa la programación empobinada a oxetos y otres meyores.

=== Nome ===
Perl llamóse orixinalmente "Pearl". Larry Wall quería da-y al llinguaxe un nome curtiu con connotaciones positives; asegura que miró (y refugó) toles combinaciones de trés y cuatro lletres del diccionariu. Tamién consideró nomalo como la so esposa Gloria. Wall afayó antes del llanzamientu oficial que yá esistía un llinguaxe de programación llamáu [[PEARL]] y camudó la ortografía del nome.

El nome de normal empieza con mayúscula (''Perl'') cuando se refier al llinguaxe y con minúscula (''perl'') cuando se refier al propiu programa intérprete por cuenta de que los sistemes de ficheros Unix estremen mayúscules y minúscules. Antes del llanzamientu de la primer edición de ''Programming Perl'' yera común referise al llinguaxe como ''perl''; [[Randal L. Schwartz]], sicasí, forzó'l nome en mayúscula nel llibru por que destacara meyor cuando fuera impresu. La distinción foi subsiguientemente adoptada pola comunidá.

El nome ye descritu dacuando como "PERL" (por '''P'''ractical '''Y'''xtraction and '''R'''eport '''L'''anguage - ''Llinguaxe Práuticu pa la Estracción ya Informe''). Anque esta espansión prevaleció en munchos manuales actuales, incluyendo la páxina de manual de Perl, ye un [[retroacrónimo]] y oficialmente'l nome nun quier dicir nada. La ortografía de PERL en mayúscules ye por eso usada como [[xíriga]] pa detectar a individuos ayenos a la comunidá. Sicasí, suxiriéronse dellos retroacrónimos, incluyendo'l cómicu ''Pathologically Eclectic Rubbish Lister'' (Contabilizador de Basura Patológicamente Eclécticu).

=== El símbolu del camellu ===

Perl simbolízase xeneralmente por un camellu d'una sola gorrumba (camellu arábigu o [[Camelus dromedarius|dromedariu]]), que foi la imaxe escoyida pol editor [[O'Reilly & Associates|O'Reilly]] pa la cubierta de ''Programming Perl'', que por consiguiente adquirió'l nome de ''El Llibru del Camellu''.<ref name="larry-wall-snippet" /> O'Reilly ye propietariu d'esti símbolu como marca rexistrada, pero diz qu'usa los sos derechos llegales namái pa protexer la ''"integridá ya impautu d'esti símbolu"''.<ref>{{cita web
 | url = http://perl.oreilly.com/usage/
 | títulu = Perl - O'Reilly Media }}<!--Títulu xeneráu por
Muriu Bot--></ref>
O'Reilly dexa l'usu non comercial del símbolu, y ufierta logos [http://www.oreillynet.com/images/perl/sm_perl_id_bk_wt.gif Programming Republic of Perl] y botones [http://www.oreillynet.com/images/perl/powered_by_perl.gif Powered by Perl].

Dende va unos años, y p'evitar esti tipu de problemes cola llicencia comercial, la Fundación Perl ellaboró nuevos logotipos basaos nuna cebolla, arriendes de les conferencies añales que Larry Wall ufierta col títulu: ''State of the Onion'' ("Estáu de la Cebolla") ''Onion'' pronúnciase bien paecíu a ''Union'', polo que suena paecíu a ''State of the Union'' ("[[Discursu del Estáu de la Unión Estáu de la Unión]]"), eventu nel cual el Presidente de los Estaos Xuníos informa a los ciudadanos del estáu en que s'atopa'l so país.

== Descripción ==
La [[Man (Unix)|páxina de manual Unix]] {{Enllaz rotu|perlintro(1)|https://metacpan.org/pod/distribution/POD2-YE/lib/POD2/YE/perlintro.pod|date=August 2021 |bot=InternetArchiveBot |fix-attempted=yes }} diz:

{{cita|Perl ye un [[Llinguaxe de programación de propósitu xeneral|llinguaxe de propósitu xeneral]] orixinalmente desenvueltu pa la manipulación de [[testu]] y qu'agora ye utilizáu pa un ampliu rangu de xeres incluyendo [[Sistema informáticu|alministración de sistemes]], [[desenvuelvo web]], programación en rede, desenvolvimientu de [[Interfaz gráfica d'usuariu|GUI]] y más.
<br />
Previóse que fuera práuticu (facilidá d'usu, eficiente, completu) en llugar de formosu (pequeñu, elegante, mínimu). Les sos principales carauterístiques son que ye bono d'usar, soporta tantu la [[programación estructurada]] como la [[programación empobinada a oxetos]] y la [[programación funcional]] (vease Higher-Order Perl: Transforming Programs with Programs), tien incorporáu un poderosu sistema de procesamientu de testu y una enorme coleición de módulos disponibles.}}

=== Carauterístiques ===
La estructura completa de Perl deriva llargamente del llinguaxe [[Llinguaxe de programación C|C]]. Perl ye un [[Programación imperativa|llinguaxe imperativu]], con [[Variable (programación)|variables]], [[Espresión (programación)|espresiones]], asignaciones, bloques de códigu delimitados por [[Paréntesis|llaves]], [[estructures de control]] y [[subrutina|subrutines]].

Perl tamién toma carauterístiques de la programación [[Unix shell|shell]]. Toles variables son marcaes con un [[Sigilo]] precedente (''[[Sigil]]'', n'inglés). Los sigilos identifiquen inequívocamente los nomes de les variables, dexando a Perl tener una rica sintaxis. Notablemente, los sigilos dexen interpolar variables direutamente dientro de les [[cadena de carácter|cadenes de calteres]] (''[[string]]''). Como nos shell, Perl tien munches funciones integraes pa xeres comunes y p'aportar a los recursos del sistema.

Perl toma les [[Llista (estructura de datos)|llistes]] del [[Lisp]], ''[[hash]]'' (memoria asociativa) del [[AWK]] y [[Espresión regular|espresiones regulares]] del [[sei]]. Tou esto simplifica y facilita toles formes del [[Analizador sintácticu|analís sintácticu]], manexu de testu y xeres de xestión de datos.

En Perl 5, añadiéronse carauterístiques pa soportar [[Estructura de dato|estructures de datos]] complexes, [[funciones de primer orde]] (p. y. [[clausura (informática)|clausures]] como valores) y un modelu de [[programación empobinada a oxetos]]. Estos inclúin referencies, paquetes y una execución de [[Métodu (informática)|métodos basada en clases]] y la introducción de variables d'ámbitu léxicu, que fizo más fácil escribir códigu robezu (xunto col pragma <tt>strict</tt>). Una carauterística principal introducida en Perl 5 foi l'habilidá de empaquetar códigu reutilizable como [[Módulu (informática)|módulos]]. Larry Wall indicó más palantre que "la intención del sistema de módulos de Perl 5 yera sofitar la crecedera de la cultura Perl en vegada del nucleu de Perl".<ref>Usenet post, May 10th 1997, with ID 199705101952.MAA00756@wall.org.</ref>

Toles versiones de Perl faen el [[Llinguaxe de programación fuertemente tipado|tipificado]] automáticu de datos y la [[xestión de memoria]]. L'intérprete conoz el tipu y requerimientos d'almacenamientu de cada oxetu nel programa; reserva y llibera espaciu pa ellos según sía necesariu. Les conversiones llegales de tipu facer de forma automática en tiempu d'execución; les conversiones illegales son consideraes errores fatales.

=== Diseñu ===
El diseñu de Perl puede ser entendíu como una respuesta a trés amplies enclinos de la industria informático: rebaxa de los costos nel hardware, aumentu de los costos llaborales y les meyores na teunoloxía de compiladores. Enantes, munchos llinguaxes d'ordenador como [[Fortran]] y C, fueron diseñaos pa faer un usu eficiente d'un hardware caru. En contraste, Perl ye diseñáu pa faer un usu eficiente de los costosos programadores d'ordenador.

Perl tien munches carauterístiques que faciliten la xera del programador a cuenta de unos requerimientos de CPU y memoria mayores. Estes inclúin xestión de memoria automática; [[Tipu de datu|tipu de datu dinámicu]]; ''strings'', llistes y ''hashes''; espresiones regulares; introspeición y una función <code>eval()</code>.

Larry Wall foi adomáu como llingüista y el diseñu de Perl foi bien aprendíu con principios llingüísticos. Exemplos inclúin la [[Codificación Huffman]] (les construcciones más comunes tienen de ser les más curties), bona distribución (la información importante tien de dir primeru) y una llarga coleición de primitives del llinguaxe. Perl favorez les construcciones del llinguaxe, tan naturales, como pa los humanos son la llectura y l'escritura, inclusive si eso fai más complicáu al intérprete Perl.

La sintaxis de Perl reflexa la idea de que "coses que son distintes tienen de paecer distintes". Por casu, esguilares, ''arrays'' y ''hashes'' tienen distintu sigilo. Índices de ''array'' y claves ''hash'' usen distintes clases de paréntesis. ''Strings'' y espresiones regulares tienen distintes allindiadores estándar. Esti aproximamientu puede oldease con llinguaxes como [[Lisp]], onde la mesma construcción ''S-espresión'' y sintaxis básica usar pa munchos y variaos propósitos.

Perl tien carauterístiques que soporten una variedá de paradigmes de programación, como la [[programación imperativa|imperativa]], [[Programación funcional|funcional]] y la [[Programación empobinada a oxetos empobinada a oxetos]]. Coles mesmes, Perl nun obliga a siguir nengún paradigma en particular, nin obliga al programador a escoyer dalguna d'elles.

Hai un ampliu sentíu de lo práctico, tantu nel llinguaxe Perl como na comunidá y la cultura que la arrodien. El prefaciu de ''Programming Perl'' empieza con, "Perl ye un llinguaxe pa tener el to trabayu termináu". Una consecuencia d'esto ye que Perl nun ye un llinguaxe ordenáu. Inclúi carauterístiques si la xente usar, tolera esceiciones a les regles y emplega la [[heurística]] pa resolver ambigüedaes sintáctiques. Por cuenta de la naturaleza indulxente del compilador, dacuando los errores pueden ser difíciles d'atopar. Falando del variáu comportamientu de les funciones internes nos contestos de llista y esguilar, la páxina de manual de <code>perlfunc(1)</code> diz "Polo xeneral, faen lo que'l to quieras, siempres que quieras la coherencia."

Perl tien dellos lemas que tresmiten aspeutos del so diseñu y usu. Unu ye ''There's more than one way to do it'' (Hai más d'una forma de faelo) (TMTOWTDI, usualmente pronunciáu 'Tim Toady'). Otros son ''"Perl: la motosierra del exércitu Suizu de los llinguaxes de programación"'' y ''"Llendes imprecises"''. Una meta prefijada de Perl ye faer les coses fáciles de forma fácil y les xeres difíciles, posibles. A Perl tamién se-y llamó ''"L'esparadrapu d'Internet"''.

=== Aplicaciones ===
[[Ficheru:LAMP software bundle.svg|miniaturadeimagen|250px|La [[LAMP]] entiendi Perl (equí con [[Squid (programa)|Squid]])]]
Perl tien munches y variaes aplicaciones, gracies a la disponibilidad de munchos módulos estándares y de terceres partes.

Usóse dende los primeros díes de la Web pa escribir [[Guión (informática)|guiones]] (''scripts'') [[Common Gateway Interface|CGI]]. Ye una de les "tres Pes" (Perl, Python y PHP), que son los llinguaxes más populares pa la creación d'aplicaciones Web, y ye un componente integral de la popular [[Soluciones LAMP|solución LAMP]] pal desenvolvimientu web. Grandes proyeutos escritos en Perl son [[Slash (CMS)|Slash]], [[Internet Movie Database|IMDb]]<ref>{{cita web
 | url = https://www.imdb.com/help/search?domain=helpdesk_faq&index=1&file=techinfo
 | títulu = What software/hardware are you using to run the site?
}}<!--Títulu xeneráu por Muriu Bot--></ref> y [[UseModWiki]], un motor de [[Wiki]]. Munchos sitios web con altu tráficu, como [[Amazon.com]] y [[Ticketmaster|Ticketmaster.com]] usen Perl estensamente.

Perl úsase de cutiu como un "[[llinguaxe pegamento]]", amestando sistemes y [[Interfaz|interfaces]] que nun fueron diseñaos específicamente pa interoperar; y pal "escarbáu de datos", convirtiendo o procesando grandes cantidaes de datos pa xeres como por casu crear informes. Ello ye que estes fortaleces tán íntimamente xuníes. La so combinación fai a Perl una popular ferramienta de propósitu xeneral pa los [[Alministrador de sistemes alministradores de sistemes]], especialmente en programes pequeños que pueden ser escritos y executaos nuna sola llinia de comandos.

Perl ye tamién llargamente usáu en [[finances]] y [[bioinformática]], onde ye apreciáu pola so [[Desenvolvimientu rápidu d'aplicaciones|desenvuelvo rápido]], tantu d'aplicaciones como d'esplegue, según l'habilidá de remanar grandes volúmenes de datos.

=== Implementación ===
Perl ta implementáu como un [[Intérprete informáticu|intérprete]], escritu en C, xunto con una gran coleición de módulos, escritos en Perl y C. La distribución fonte tien, en [[2005]], 12 [[megabyte|MB]] cuando se empaqueta y [[Compresión de datos|estrúi]] nun ficheru [[tar]]. L'intérprete tien 150.000 llinies de códigu C y se [[Compilador|compila]] nun [[ejecutable]] de 1 MB nes [[Arquiteutura de computadores|arquitectures de hardware]] más típiques. De forma alternativa, l'intérprete puede ser compilado como una biblioteca y ser [[sistema enfiñíu|enfiñida]] n'otros programes. Hai cerca de 500 módulos na distribución, sumando 200.000 llinies de Perl y unes 350.000 llinies adicionales de códigu C. Enforma del códigu C nos módulos consiste en tables de [[codificación de calteres]].

L'intérprete tien una arquiteutura empobinada a oxetos. Tolos elementos del llinguaxe Perl —[[Esguilar (informática)|esguilares]], [[Llista (estructura de datos)|llistes]], ''[[Tabla hash|hashes]]'', referencies a códigu, manejadores d'archivu— tán representaos nel intérprete como estructures C. Les operaciones sobre estes estructures tán definíes como una numberosa coleición de macros, [[typedef]] y funciones; esto constitúi l'[[Application Programming Interface|API]] C de Perl. La API Perl puede ser esconcertante pal ensin empecipiar, pero los sos puntos d'entrada siguen un esquema de nomes coherente, qu'ayuda a los que quieran utilizala.

La execución d'un programa Perl puede estremase, generosamente, en dos fases: [[tiempu de compilación]] y [[tiempu d'execución]].<ref>Una descripción del intérprete Perl 5 puede atopase en ''Programming Perl'', 3rd Ed., [https://web.archive.org/web/20040215161250/http://www.oreilly.com/catalog/pperl3/chapter/ch18.html capítulu 18] (inglés)</ref> En tiempu de compilación l'intérprete ''[[Analizador sintácticu|parsea]]'' el testu del programa nun [[Gramática llibre de contexto#Derivaciones y árboles sintácticos|árbol sintácticu]]. En tiempu d'execución, executa'l programa siguiendo l'árbol. El testu ye parseado namái una vegada y l'árbol sintácticu ye [[Optimización (cómputu)|optimizáu]] antes de ser executáu, por que la fase d'execución sía relativamente [[Eficiencia|eficiente]]. Les optimizaciones del árbol sintácticu en tiempu de compilación inclúin [[:en:constant folding|simplificación d'espresiones constantes]], espardimientu del contestu y [[optimización en cachos sueltos de códigu]]. Sicasí, les fases de compilación y execución pueden [[Programación estructurada#Anidamiento|añerase]]: un bloque <code>BEGIN</code> execútase en tiempu de compilación, ente que una función <code>eval</code> empecipia una compilación mientres una execución. Dambes operaciones tán implícites n'otres -de forma notable, la clausa <code>use</code> que carga biblioteques, conocíes en Perl como módulos, implica un bloque <code>BEGIN</code>.

Perl ye un [[llinguaxe dinámicu]] y tien una [[gramática]] [[Gramátiques sensibles al contestu sensible al contestu]] que puede quedar afeutada pol códigu executáu mientres una fase d'execución entemedia (Ver exemplos.<ref>{{cita web
 | url = http://www.perlmonks.org/index.pl?node_id=44722
 | títulu = On Parsing Perl
}}<!--Títulu xeneráu por Muriu Bot--></ref>). Por eso Perl nun puede ser parseado por aciu una aplicación direuta d'[[analizadores sintácticos]]/parseadores [[Ferramienta de programación lex|Lex]]/[[Yacc]]. Sicasí, l'intérprete implementa'l so propiu analizador léxicu, que coordináu con un parseador modificáu [[GNU bison]] resuelve les ambigüedaes del llinguaxe. Díxose que "namái perl puede parsear Perl", queriendo dicir que namái'l [[intérprete Perl]] (''perl'') puede parsear el llinguaxe Perl (''Perl''). La razón d'esto atestíguase poles persistentes imperfecciones d'otros programes qu'entamen la xera de parsear Perl, como los analizadores de códigu y los autu-indentadores, que tienen que tráteles non yá coles munches formes d'espresar inequívocamente construcciones sintáctiques, sinón tamién col fechu de que tamién Perl nun puede, polo xeneral, ser parseado ensin antes ser executáu.

El [[Caltenimientu de Software|caltenimientu]] del intérprete Perl, a lo llargo de los años, volvióse cada vez más difícil. El nucleu tuvo en continuu desenvolvimientu dende [[1994]]. El códigu foi optimizáu en [[rendimientu]] por cuenta de la simplicidá, claridá y unes interfaces internes más fuertes. Nueves carauterístiques fueron añadíes, calteniendo inda, compatibilidá virtualmente completa escontra tras coles primeres versiones. El tamañu y la complexidá del intérprete son una barrera pa los desarrolladores que deseyen trabayar nél.

Perl ye distribuyíu con unos 120.000 test funcionales. Estos execútense como parte del procesu normal de construcción y comprueben estensamente al intérprete y a los sos módulos principales. Los desarrolladores Perl confíen nos test funcionales p'asegurase que los cambeos nel intérprete nun introducen errores; recíprocamente, los usuarios Perl que vean al intérprete pasar los test funcionales nel so sistema pueden tener un altu grau d'enfotu de que ta funcionando afechiscamente.

Nun hai una especificación o estándar escritu pal llinguaxe Perl y nun hai planes de crear unu pa la versión actual de Perl. Siempres esistió namái una implementación del intérprete. Esti intérprete, xunto colos test funcionales, formen la especificación ''[[de facto]]'' del llinguaxe.

=== Disponibilidad ===
Perl ye [[software llibre]] y ta llicenciáu so la [[Llicencia Artística]] y la [[Llicencia pública xeneral de GNU|GNU General Public License]]. Esisten [[Perl#Distribuciones|distribuciones]] disponibles pa la mayoría de [[Sistema operativu|sistemes operativos]]. Ta especialmente estendíu en [[Unix]] y en sistemes [[*nix|similares]], pero foi portáu a les plataformes más modernes (y otres más obsoletas). Con namái seis esceición confirmaes, pue ser compilado dende'l [[códigu fuente]] en tolos Unix, compatibles [[POSIX]] o cualesquier otra plataforma Unix compatible. Sicasí, esto nun ye de normal necesariu, porque Perl ta incluyíu por defectu na instalación de los sistemes operativos más populares.<ref name="cpanports">{{cita web | url=http://www.cpan.org/ports/ | títulu=Perl Ports (Binary Distributions) | editor=CPAN.org | autor=Hietaniemi, Jarkko | añu=1998}}</ref>

Por cuenta de los cambeos especiales necesarios pa soportar al [[Mac OS|Mac OS Classic]], esiste una adautación especial llamada [https://web.archive.org/web/20060118125208/http://www.macperl.com/ MacPerl].<ref name="macperl">{{cita web | url=http://www.macperl.com/ | títulu=The MacPerl Pages | añu=1997 | editor=Prime Time Freeware | urlarchivu=https://web.archive.org/web/20060118125208/http://www.macperl.com/ | fechaarchivu=18 de xineru de 2006 }}</ref>

==== GNU/Linux ====
Perl ta preinstalado nes distribuciones más populares de [[GNU/Linux]] incluyendo [[Gentoo Linux|Gentoo]], [[Slackware Linux|Slackware]], [[Mandriva]], [[Debian]], [[RedHat]] y [[SUSE]].

==== Windows ====
Los usuarios de [[Microsoft Windows]] de normal instalen una distribución binaria de Perl.<ref>{{cita web | url=http://win32.perl.org/wiki/index.php?title=Win32_Distributions#Perl_Distributions | títulu=Win32 Distributions | editor=Win32 Perl Wiki}}</ref> Compilar Perl dende'l códigu fonte so Windows ye posible, pero la mayoría de les instalaciones nun disponen del necesariu compilador de C.

La capa de emulación [[Cygwin]] apurre otra forma de correr Perl baxu Windows. Cygwin apurre en redolada paecida al Unix en Windows qu'inclúi [[gcc]], polo que compilar Perl dende'l códigu ye una opción accesible pa los usuarios que prefieren esta opción.

En xunu de 2006, win32.perl.org foi llanzáu por Adam Kennedy en nome de la [[Fundación Perl]]. Ye una comunidá web "pa tou lo rellacionao con Windows y Perl".<ref name="win32perl">{{cita web | url=http://win32.perl.org/wiki/index.php?title=Main_Page | títulu=Win32 Perl Wiki | autor=Kennedy, Adam | añu=2006}}</ref>

== Estructura del llinguaxe ==
=== Programa exemplu ===
En Perl, el programa canónicu "[[Hola mundu]]" ye:
<syntaxhighlight lang="perl">#!/usr/bin/perl
print "¡Hola mundu!\n";</syntaxhighlight>
La primer llinia contién el ''[[shebang]]'' (par de calteres qu'identifica'l testu que sigue), que lu indica al sistema operativu ónde atopar l'intérprete de Perl. La segunda imprime'l ''string'' ''¡Hola mundu!'' y un calter de [[nueva llinia]].

El ''shebang'' ye la forma normal pa invocar al intérprete nos sistemes Unix. Los sistemes Windows pueden siguir utilizándolo o pueden acomuñar la [[estensión d'archivu]] <tt>.pl</tt> col intérprete Perl. Dellos editores de testu tamién usen la llinia ''shebang'' como una pista sobre la manera de trabayu en que tienen d'operar. Si'l programa ye executáu por perl y non invocáu pol shell, la llinia qu'empieza pol ''shebang'' ye parseada pa interpretar les opciones. N'otru casu, ye inorada. Pa ver los detalles d'esto, consultar [http://perldoc.perl.org/perlrun.html#DESCRIPTION la páxina de manual perlrun].

=== Tipos de datos ===
Perl tien trés [[Tipu de dato|tipo de datos]]: [[Esguilar (informática)|esguilares]], [[Llista (estructura de datos)|llistes]]
y [[Tabla hash|hashes]]:
* Un esguilar ye un solu valor; puede ser un númberu, un ''string'' (cadena de calteres) o una [[referencia]]
* Una llista ye una coleición ordenada d'esguilares (una variable qu'almacena una llista llámase ''[[Vector (programación)|array]]'')
* Un ''hash'', o [[Hash|memoria asociativa]], ye un mapeo de ''strings'' a esguilares; los ''strings'' llámense ''claves'' y esguilar ''valores''.

Toles variables tán precedíes por un sigilo, qu'identifica'l tipu de datu que ye aportáu (non el tipu de datu de la mesma variable). Puede usase el mesmu nome pa variables de distintos tipos, ensin que tengan conflictos.
<syntaxhighlight lang="perl">
$var # un esguilar
@var # un array
%var # un hash
</syntaxhighlight>
Los númberos escribir de la forma avezada; los ''strings'' tán arrodiaos ente comines de delles clases.
<syntaxhighlight lang="perl">
$n = 42;
$nome = "juan";
$color = 'colloráu';
</syntaxhighlight>
Perl va convertir los ''strings'' en númberos y viceversa dependiendo del contestu en que sían usaos. Nel siguiente exemplu los ''strings'' <code>$n</code> y <code>$m</code> son trataos como númberos cuando son argumentos del operador suma. Esti códigu imprime'l númberu '5', refugando cualesquier información non numbérica de la operación y dexando los valores de les variables intactos. (L'operador de concatenación nun ye <code>+</code>, sinón <code>.</code>.)
<syntaxhighlight lang="perl">
$n = "3 mazanes";
$m = "2 naranxes";
print $n + $m;
</syntaxhighlight>
Perl tamién tien un contestu [[Tipu de datu lóxicu|booleano]] qu'utiliza na evaluación de declaraciones condicionales. Los siguientes valores en Perl evalúen toos como falsu:
<syntaxhighlight lang="perl">
$falsu = 0; # el númberu cero $falsu =
0.0; # el númberu cero como flotante $falsu =
'0'; # el string cero $falsu =
""; # el string vacíu $falsu =
undef; # el valor devueltu por undef
</syntaxhighlight>
Tolos demás valores evaluar a verdaderu. Esto inclúi'l curiosu ''string'' autu-descriptivu <code>"0 pero verdaderu"</code>, que de fechu ye 0 como númberu, pero verdaderu como booleano. (Cualesquier ''string'' non numbéricu tamién va tener esta propiedá, pero esti ''string'' en particular ye ignoráu por Perl en contestos numbéricos). Les espresiones booleanas evaluaes tamién devuelven valores esguilares. Anque la documentación nun indica qué valor ''particular'' devuélvese como verdaderu o falsu (y polo tanto non fiable), munchos operadores booleanos devuelven 1 por verdaderu y el ''string'' vacíu pa falsu (qu'evalúa a cero en contestu numbéricu). La función ''defined()'' diz-y si la variable tien dalgún valor. Nel exemplu anterior ''defined($falsu)'' va ser verdaderu con cada unu de los valores anteriores, sacante ''undef''.
Si, específicamente, quier asegurase de tener un resultáu 1/0 (como en C), precisa realizar el cálculu siguiente:
<syntaxhighlight lang="perl">
my $resultáu_real = $resultancia_booleano ? 1 : 0;
</syntaxhighlight>
Una llista defínese listando los sos elementos, dixebraos por comes y arrodiaos por paréntesis onde asina sía riquíu pola precedencia de los operadores.
<syntaxhighlight lang="perl">
@puntuaciones = (32, 45, 16, 5);
</syntaxhighlight>
Un ''hash'' puede ser inicializado dende una llista de pares clave/valor.
<syntaxhighlight lang="perl">
%favoritu = (
 joe => 'colloráu', sam
 => 'azul', );

</syntaxhighlight>
Los elementos individuales d'una llista son aportaos utilizando un índiz numbéricu, dientro de corchetes. Valores individuales nun hash son aportaos utilizando la correspondiente clave, dientro de llaves. El sigilo <tt>$</tt> identifica que l'elementu aportáu ye un esguilar.
<syntaxhighlight lang="perl">
$puntuaciones[2] # un elementu de puntuaciones favoritu{joe} # un valor de %favoritu </syntaxhighlight>

Múltiples elementos pueden ser aportaos usando nel so llugar el sigilo <tt>@</tt> (identificando la resultancia como una llista).
<syntaxhighlight lang="perl">
@puntuaciones[2, 3, 1] # tres elemento de puntuaciones favoritu{'joe', 'sam'} # dos valores de %favoritu </syntaxhighlight>

El númberu d'elementos nun array puede ser llográu evaluando'l ''array'' en contestu esguilar o cola ayuda del sigilo <tt>$#</tt>. Esti postreru da l'índiz del últimu elementu dientro del ''array'', non el númberu d'elementos.
<syntaxhighlight lang="perl">
$numbero = @amigos;
$#amigos; # l'índiz del últimu elementu n'amigos amigos+1; # de normal el númberu d'elementos en @amigos, #
 que ye unu más que $#amigos porque'l primer elementu tien l'índiz 0, non 1
</syntaxhighlight>
Hai unes poques funciones qu'operen sobre ''hashes'' enteros.
<syntaxhighlight lang="perl">
@nomes_de_veceros = keys %direiciones; # guarda en @nomes_de_veceros toles claves de %direiciones
@direcciones_de_email = values %direiciones; # guarda en @direcciones_de_email tolos valores de %direiciones
</syntaxhighlight>

=== Estructures de control ===
{{AP|w:en:Perl control structures|l1=Estructures de control, n'inglés}}
Perl tien delles clases d'estructures de control.

Tien estructures de control empobináu al bloque, similar a los de los llinguaxes de programación C y Java. Les condiciones tán arrodiaes por paréntesis y los bloques subordinaos por llaves:
<syntaxhighlight lang="perl">
 ''etiqueta'' while ( ''condición'' ) {... }
 ''etiqueta'' while ( ''condición'' ) {... } continue {... }
 ''etiqueta'' for ( ''espresión inicial''; ''espresión condicional''; ''espresión incremental'' ) {... }
 ''etiqueta'' foreach ''var'' ( ''llista'' ) {... }
 ''etiqueta'' foreach ''var'' ( ''llista'' ) {... } continue {... }
 if ( ''condición'' ) {... }
 if ( ''condición'' ) {... } else {... } 
 if ( ''condición'' ) {... } elsif ( ''condición'' ) {... } else {... } 
</syntaxhighlight>
Cuando se controla a una sola declaración, los modificadores de declaración apurren una sintaxis más llixera:
<syntaxhighlight lang="perl">
 ''declaración'' if ''condición'';
 ''declaración'' unless ''condición'';
 ''declaración'' while ''condición'';
 ''declaración'' until ''condición'';
 ''declaración'' foreach ''llista'';
</syntaxhighlight>
Los operadores lóxicos ''cortucircuitu'' son de normal usaos pa controlar el fluxu del programa a nivel d'espresión:
<syntaxhighlight lang="perl">
 ''expr'' and ''expr''
 ''expr'' or ''expr''
</syntaxhighlight>
Les pallabres clave de control de fluxu <code>next</code>, <code>last</code>, <code>return</code> y <code>redo</code> son espresiones, polo que pueden ser usaes colos operadores cortucircuitu.

Perl tamién tien dos construcciones implícites pa bucles:
<syntaxhighlight lang="perl">
 ''resultancies'' = grep {... } ''llista''
 ''resultancies'' = map {... } ''llista''
</syntaxhighlight>
<code>grep</code> devuelve tolos elementos de ''llista'' en que'l bloque subordináu evalúa a verdaderu. <code>map</code> evalúa'l bloque subordináu per cada elementu de ''llista'' y devuelve una llista de los valores resultantes. Estes construcciones dexen un estilu simple de programación funcional.

La [[switch|declaración switch]] (llamada "given"/"when") esiste dende la versión 5.10:
<syntaxhighlight lang="perl">
 use 5.10.1; # o posterior
 given ($variable) {
 when (''condición'') { ... }
 when (''condición'') { ... }
 default { ... }
 }
</syntaxhighlight>

Perl inclúi una declaración <code>goto ''etiqueta''</code>, pero ye usada raramente. Les situaciones onde n'otros llinguaxes utilízase <code>[[GOTO|goto]]</code> nun asoceden tan de cutiu en Perl por cuenta de les sos amplies opciones de control de fluxu.

Esiste tamién una declaración <code>goto &''sub''</code> que realiza una llamada 'final'. Termina la subrutina actual y darréu llama a la <code>''sub''</code> especificada. Esto úsase en situaciones onde una nueva subrutina puede realizar una xestión de la [[Pila (estructura de datos)|pila]] más eficiente que'l mesmu Perl (porque típicamente nun se riquir nengún cambéu na pila actual), y nuna recursión bien fonda esti tipu de llamaes puede tener un sustancial impautu positivu nel funcionamientu porque evita la sobrecarga de la xestión contexto/pila nel momentu de retornar.

=== Subrutinas ===
Les [[subrutina|subrutines]] definir cola pallabra clave <code>sub</code> ya invocaes a cencielles nomándoles. Si la subrutina en cuestión nun foi inda declarada, ye necesariu, pal procesu d'analís sintácticu, poner los paréntesis.
<syntaxhighlight lang="perl">
foo(); # paréntesis necesarios equí...
sub foo {... }
foo; #... pero non equí </syntaxhighlight>

Una llista d'argumentos pueden ser indicaos dempués del nome de la subrutina. Los argumentos pueden ser esguilares, llistes o ''hashes''.
<syntaxhighlight lang="perl">
foo $x, @y, %z;
</syntaxhighlight>
Los parámetros d'una subrutina nun precisen ser declaraos, nin en númberu nin en tipu; ello ye que pueden variar en cada llamada. Los ''arrays'' son espandíos a los sos elementos, los ''hashes'' a una llista de pares clave/valor y tol conxuntu ye pasáu a la subrutina como una indiferenciada llista d'esguilares.

Cualesquier de los argumentos pasaos tán disponibles pa la subrutina nel ''array'' especial <code>@_</code>. Los elementos de <code>@_</code> son acomuñaos a los argumentos actuales; camudando un elementu de <code>@_</code> camuda l'argumentu correspondiente.

Los elementos de <code>@_</code> pueden ser aportaos colos subíndices de la forma normal.
<syntaxhighlight lang="perl">
$_[0], $_[1]
</syntaxhighlight>
Sicasí, el códigu resultante pue ser malo de lleer y los parámetros tener una semántica de pase per referencia, que puede resultar daqué non deseable.

Un modismu común ye asignar <code>@_</code> a una llista de variables con nomes.
<syntaxhighlight lang="perl">
my($x, $y, $z) = @_;
</syntaxhighlight>
Esto afecta tantu a la mnemónica de los nomes de los parámetros como a la semántica de los valores pasaos por valor. La pallabra clave <code>my</code> indica que les siguientes variables tán léxicamente enfiñíes nel bloque que les contienen.

Otru modismu ye sacar los parámetros de <code>@_</code>. Esto ye bien común cuando la subrutina toma un namái argumentu.
<syntaxhighlight lang="perl">
my $x = shift; # Si nun se diz nada, referímonos a @_
</syntaxhighlight>
Les subrutinas pueden devolver valores.
<syntaxhighlight lang="perl">
return 42, $x, @y, %z;
</syntaxhighlight>
Si la subrutina nun sale vía declaración <code>return</code>, entós devuelve la última espresión evaluada nel cuerpu de la subrutina. ''Arrays'' y ''hashes'' nel valor de torna son espandíos a una llista d'esguilares, igual que si fueren argumentos d'una función.

La espresión devuelta ye evaluada nel contestu de la llamada de la subrutina; esto puede sorprender al despreveníu.
<syntaxhighlight lang="perl">
sub llista { (4, 5, 6) }
sub array { @x = (4, 5, 6); @x }
 
$x = llista; # devuelve 6 - últimu elementu de la llista $x
= array; # devuelve 3 - númberu d'elementos de la llista @x
= llista; # devuelve (4, 5, 6)
@x = array; # devuelve (4, 5, 6)
</syntaxhighlight>
Una subrutina puede afayar el so contestu de llamada cola función <code>wantarray</code>.
<syntaxhighlight lang="perl">
sub cualesquier { wantarray ? (1, 2) : "Naranxes" }
 
$x = cualesquier; # devuelve "Naranxes"
@x = cualesquier; # devuelve (1, 2)
</syntaxhighlight>

=== Espresiones regulares ===
{{AP|w:en:Perl regular expression examples|l1=Espresiones regulares con Perl, n'inglés}}
El llinguaxe Perl inclúi una sintaxis especializada pa escribir [[Espresión regular|espresiones regulares]] y l'intérprete contién un motor pa empareyar ''strings'' con espresiones regulares. El motor d'espresiones regulares usa un algoritmu de [[Vuelta Tras]] ([[:en:Backtracking|backtracking]]), estendiendo les sos capacidaes dende'l simple axugamientu de patrones simples cola captura y sustitución de ''strings''. El motor d'espresiones regulares derivar de ''regex'', escritu por [[:en:Henry Spencer|Henry Spencer]].

La sintaxis d'espresiones regulares foi orixinalmente tomada de les espresiones regulares de Unix Versión 8. Sicasí, estremóse yá antes del primer llanzamientu de Perl y dende entós foi incorporando munches más carauterístiques. Otros llinguaxes y aplicaciones tán adoptando les [[PCRE|espresiones regulares de Perl (PCRE)]] en cuenta de les espresiones regulares [[POSIX]], incluyendo PHP, Ruby, Java y el [[Servidor HTTP Apache]].

L'operador <code>m//</code> (empareya) dexa comprobar un axugamientu per mediu d'una espresión regular. (Pa embrivir, el precedente <code>m</code> puede ser omitíu.) Nel casu más simple, una espresión como:
<syntaxhighlight lang="perl">
$x =~ m/abc/
</syntaxhighlight>
evalúa a verdaderu [[Coimplicación|si y namái si]] el ''string'' <code>$x</code> empareya cola espresión regular <code>abc</code>.

Partes de la espresión regular pueden ser incluyíes ente paréntesis: les partes correspondientes d'un string empareyáu son ''prindaes''. Los ''strings'' prindaos son asignaos de forma secuencial a les variables internes <code>$1, $2, $3,...</code> y una llista de ''strings'' prindaos devuélvese como valor del axugamientu.
<syntaxhighlight lang="perl">
$x =~ m/a(.)c/; # prinda'l calter ente 'a' y 'c' y guardar en $1
</syntaxhighlight>
L'operador <code>s///</code> (sustitución) especifica una operación de busca y reemplazu:
<syntaxhighlight lang="perl">
$x =~ s/abc/aBc/; # Convierte la b en mayúscula </syntaxhighlight>

Les espresiones regulares en Perl pueden tomar unos ''modificadores''. Son sufixos d'una sola lletra que modifiquen el significáu de la espresión:
<syntaxhighlight lang="perl">
$x =~ m/abc/i; # axugamientu independientemente de si tán en mayúscula o minúscula $x
=~ s/abc/aBc/g; # busca y reemplazu global (a lo llargo de tol ''string'') 
</syntaxhighlight>
Les espresiones regulares pueden ser trupes y críptiques. Esto ye porque la sintaxis de les espresiones regulares ye desaxeradamente compacta, xeneralmente usando calteres sueltos o pares de calteres que representen les sos operaciones. Perl sollivia un pocu esti problema col modificador <code>/x</code> que dexa a los programadores poner espaciu en blancu y comentarios ''dientro'' de les espresiones regulares:
<syntaxhighlight lang="perl">
$x =~ m/a # empareya una 'a'
 . # empareya cualquier calter
 c # empareya una 'c'
 /x;
</syntaxhighlight>
Un usu común de les espresiones regulares ye'l d'especificar allindiadores de campos al operador <code>split</code>:
<syntaxhighlight lang="perl">
@pallabres = split m/,/, $llinia; # estrema la llinia de valores separaos por comes
</syntaxhighlight>
L'operador <code>split</code> complementa la captura de string. La captura de string devuelve les partes d'un string qu'empareyen con una espresión regular; <code>split</code> devuelve les partes que nun empareyar.

=== Interfaz con bases de datos ===
Perl ta llargamente favorecíu pa les aplicaciones de [[bases de datos]]. Les sos facilidaes de manexu de testu son bones pa xenerar consultes [[SQL]]; ''arrays'', ''hashes'' y la xestión de memoria automática fai fácil recoyer y procesar los datos devueltos.

Nes primeres versiones de Perl, les interfaces de bases de datos fueron creaes enllazando l'intérprete con una biblioteca de base de datos dende'l llau del veceru. Esto yera daqué cabileñu; un problema en particular foi que'l ejecutable <code>perl</code> resultante taba acutáu a usar namái una interfaz de base de datos, la que fuera enllazada. Tamién, reenlazar l'intérprete yera lo suficientemente dificultosu que namái foi realizáu pa delles de les más famoses ya importantes bases de datos.

En Perl 5, les interfaces de bases de datos tán implementaes pol módulu [[Perl DBI]]. El módulu <code>DBI</code> presenta una única interfaz a les aplicaciones Perl, independiente de les bases de datos, ente que los módulos <code>DBD::</code> (Controlador de base de datos) remanen los detalles d'accesu a unes 50 bases de datos distintos. Esisten controladores <code>DBD::</code> pa la mayor parte de les bases de datos [[ANSI]] SQL.

== Comparancia de funcionamientu ==
El [https://web.archive.org/web/20180529203516/http://shootout.alioth.debian.org/ "Computer Language Shootout Benchmarks"] compara'l funcionamientu de implementaciones de problemes de programación típicos, en diversos llinguaxes. Los sos implementaciones Perl de normal tomen más memoria que les implementaciones n'otros llinguaxes, y esto varia los resultaos de velocidá. Les prestaciones de Perl son similares a les d'otros llinguaxes como Python, PHP o Ruby, pero más lentu que la mayor parte de llinguaxes compilados.

Perl puede ser más lentu qu'otros llinguaxes faciendo lo mesmo porque tien que compilar el códigu fonte cada vez que cuerre'l programa. En [http://www.perl.com/pub/a/2005/12/21/a_timely_start.html "A Timely Start"], Jean-Louis Leroy atopó que los sos scripts en Perl tardaben muncho más tiempu en correr que lo qu'él esperaba porque l'intérprete perl perdía la mayor parte del tiempu buscando y compilando los módulos. Como Perl nun puede salvar el so compilación entemedia como la faen Java, Python y Ruby, los scripts Perl traen esta sobrecarga en cada execución. La sobrecarga nun ye un problema cuando la fase d'execución ye bien llarga, pero puede sesgar significativamente en tiempos d'execución bien curtios, como s'atopa de cutiu nos benchmarks. Una vegada que perl empecipia la fase d'execución, sicasí, pue ser bien rápido y típicamente supera a otros llinguaxes dinámicos. Teunoloxíes como [[mod perl]] superen esto guardando'l programa compilado en memoria ente execuciones, o [https://metacpan.org/module/Class::Autouse Class::Autouse] que retrasa la compilación de partes del programa hasta que son necesaries.

=== Optimizando ===
Nicholas Clark, un desarrollador principal de Perl, diserta sobre delles meyores nel diseñu con Perl y otres soluciones en [http://www.ccl4.org/~nick/P/Fast_Enough/ "When perl is not quite fast enough"] {{Webarchive|url=https://web.archive.org/web/20060808193326/http://www.ccl4.org/~nick/P/Fast_Enough/ |date=2006-08-08 }}. Les rutines más crítiques d'un programa Perl pueden escribise en C o inclusive en [[llinguaxe ensamblador]] con [[:en:XS (Perl)|XS]] o [https://metacpan.org/pod/Inline Inline].

Optimizar Perl puede riquir una conocencia íntima del so funcionamientu en llugar de la maña col llinguaxe y la so sintaxis, significando que'l problema ta cola implementación de Perl en llugar de col llinguaxe mesmu. Perl 6, la siguiente versión, va tomar dalgunes d'estes idees como lleiciones, qu'otros llinguaxes yá aprendieron.

== Futuru ==
{{AP|Perl 6|l1=Perl 6}}
Nel añu 2000, na [[conferencia Perl]], [[Jon Orwant]] fixo un pidimientu pa una nueva versión del llinguaxe.<ref>[http://www.nntp.perl.org/group/perl.perl6.meta/424 Trescripción de la charra de Larry]. Anotada'l 28 de setiembre de 2006. (inglés)</ref> Esto condució a una decisión pa empezar el trabayu del rediseño del llinguaxe, que se llamaría Perl 6. Pidiéronse propuestes a la comunidá Perl pa les nueves carauterístiques del llinguaxe, y recibiéronse más de 300 RFC (del inglés ''Request For Comments'', pidimientu de comentarios).

Larry Wall tuvo los siguientes años dixiriendo los RFC y sintetizándolos nuna redolada de trabayu coherente pa Perl 6. Presentó'l so diseñu de Perl 6 nuna serie de documentos llamaos [[apocalipsis (perl)|Apocalipsis]], que se numberen pa correspondese colos capítulos de ''Programming Perl''. L'actual, inacabada especificación de Perl 6, ta resumida nunos documentos de diseñu llamaos Sinopsis, que tán numberaos pa corresponder a los Apocalipsis.

Perl 6 nun tien la intención de ser compatible pa tras, anque va esistir una manera de compatibilidá.

En [[2001]] decidióse que Perl 6 corriera nuna [[máquina virtual]] llamada [[Máquina virtual Parrot|Parrot]]. Esto quier dicir qu'otros llinguaxes qu'usen Parrot van poder ganar accesu nativu a CPAN y va dexar dalgún ciertu nivel de desenvolvimientu cruzáu.

En [[2005]] [[Audrey Tang]] creó'l proyeutu [[pugs]], una implementación de Perl 6 en [[Haskell]]. Foi y ye una plataforma de testeo del llinguaxe Perl 6 (separáu del desenvolvimientu actual de la implementación) dexando a los diseñadores esplorar. El proyeutu pugs nició una activa comunidá Perl/Haskell centrada alredor de la canal irc #perl6 en [[Freenode]].

Un ciertu númberu de carauterístiques nel llinguaxe Perl 6 amuesen una similaridad coles de Haskell y Perl 6 foi acoyíu pola comunidá Haskell como un potencial llinguaxe de scripting.

Nel [[2006]], Perl 6, Parrot y pugs siguen tando baxu desenvolvimientu y un nuevu módulu pa Perl 5 llamáu [[v6 (Perl)|v6]] dexa a una parte del códigu Perl 6 correr direutamente sobre Perl 5.

== Diversión con Perl ==
Como en C, les competiciones de [[códigu cégaru]] son una traza popular de la cultura Perl. L'[[:en:Obfuscated Perl contest|Obfuscated Perl contest]] homenaxa la virtú de la flexibilidá sintáctica de Perl. El programa siguiente imprime'l testu "Just another Perl / Unix hacker", usando 32 procesos en paralelu coordinaos con pipes. La esplicación completa ta disponible en [http://perl.plover.com/obfuscated/ el sitiu web del autor].

<!-- Esti códigu usar con permisu. See Talk: english page. -->
<syntaxhighlight lang="perl">
@P=split//,".URRUU\c8R";@d=split//,"\nrekcah xinU / lreP rehtona tsuJ";sub p{
@p{"r$p","o$p"}=(P,P);pipe"r$p","o$p";++$p;($q*=2)+=$f=!fork;map{$P=$P[$f^ord
($p{$_})&6];$p{$_}=/ ^$P/ix?$P:close$_}keys%p}p;p;p;p;p;map{$p{$_}=~/^[P.]/&&
close$_}%p;wait until$?;map{/^r/&&<$_>}%p;$_=$d[$q];sleep rand(2)if/\S/;print</syntaxhighlight>

De forma similar al códigu cégaru pero con un propósitu distintu, "Poesía Perl" ye la práctica d'escribir poemes que puedan ser compilados como códigu llegal de Perl (anque xeneralmente ensin sentíu). Esta afición ye más o menos única en Perl debíu al gran númberu de pallabres normales del Inglés que'l llinguaxe utiliza. Los nuevos poemes publicar de forma regular nel sitiu [[Perl Monks]], na seición [http://www.perlmonks.org/index.pl?node=Perl%20Poetry Poesía Perl]. Parte del saber de Perl ta en [[Black Perl]], un exemplu infame de la poética de Perl.

Otru pasatiempu ye "Perl Golf". Como col [[Golf|deporte real]], la meta ye amenorgar el númberu de golpes necesarios pa completar un oxetivu, pero equí, los "golpes" referir a los pulsaciones de tecláu en cuenta de a los percorríos nun club de golf. Propónse una xera, como "escaniar un string d'entrada y devolver el [[palíndromu]] más grande que contenga" y los participantes intenten bater a los sos oponentes escribiendo soluciones que rican cada vegada menos calteres de códigu fuente Perl.

Otra tradición ente los ''[[hacker]]'' Perl ye escribir JAPH, que ye una especie de pequeños programes cégaros qu'imprimen la frase "Just another Perl hacker,". El "canónicu" JAPH inclúi la coma a la fin, anque de cutiu omítese, y otres munches variantes que se crearon (exemplu,<ref>{{cita web
 | url = http://www.perlmonks.org/index.pl?node_id=292135
 | títulu = Aharrr!
}}</ref> qu'imprime "Just Another Perl Pirate!").

Un módulu Perl interesante ye [http://www.csse.monash.edu.au/~damian/papers/HTML/Perligata.html Lingua::Romana::Perligata] [https://metacpan.org/module/Lingua::Romana::Perligata (en CPAN]). Esti módulu traduz el códigu fonte d'un script escritu en Llatín a Perl, dexando al programador escribir programes ejecutables en [[Llatín]].

La comunidá Perl acutó l'espaciu de nomes "[[Acme]]" pa los módulos que sían risonderos o esperimentales. Dalgunos de los módulos Acme tán implementaos de maneres bien entreteníes. Dellos exemplos:
* [https://metacpan.org/module/Acme::Bleach Acme::Bleach], unu de los [http://use.perl.org/use.perl.org/_acme/journal/200.html primeros módulos en Acme::] {{Webarchive|url=https://web.archive.org/web/20140707141758/http://use.perl.org/use.perl.org/_acme/journal/200.html |date=2014-07-07 }}, dexa al códigu fonte d'un programa ser "blanquiáu" (esto ye, tolos calteres son reemplazaos pel espaciu en blancu) y siguir funcionando. Ye un exemplu d'un [[filtru de códigu fuente]]. Hai tamién un ciertu númberu d'otros filtros de fonte nel espaciu de nomes Acme.
* [https://metacpan.org/module/Acme::Hello/ Acme::Hello] simplifica'l procesu d'escribir un programa "Hello, World!"
* [https://metacpan.org/module/Acme::Currency/ Acme::Currency] dexa camudar el prefixu "$" de les variables esguilares por otru calter (por defectu usa'l [[euru]] "€")
* [https://metacpan.org/module/Acme::ProgressBar/ Acme::ProgressBar] ye, dafechu fechu de camín, una horrible ya ineficiente forma d'indicar el progresu d'una xera *
[https://metacpan.org/module/Acme::VerySign/ Acme::VerySign] satiriza'l largamente criticáu serviciu [[Site Finder]] de [[VeriSign]]
* [https://metacpan.org/module/Acme::Don::t Acme::Don't] implementa l'opuestu lóxicu de la pallabra clave <code>do</code> —<code>don't</code>—, que nun executa'l [[bloque de códigu]] subordináu.

=== Enllaces rellacionaos ===
* [[:m:b:en:Programming:Perl/Humour|Humor Perl en Wikibooks]]
* [https://metacpan.org/module/Lingua::Romana::Perligata Lingua::Romana::Perligata - ¡Escribe Perl en Llatín!]
* [http://www.perlmonks.org/index.pl?node_id=253797 Un tutorial sobre Perligata]
* [http://www.softpanorama.org/Bulletin/Humor/humor092.html Test de Pureza Perl]

== Comunidá Perl ==
La comunidá Perl ta constituyida por grupos que de la mesma conformen [[Perl Mongers]].<ref>{{Cita web|url=http://www.pm.org/|títulu=Perl Mongers|fechaaccesu=14 de marzu de 2016|autor=|enllaceautor=|fecha=|idioma=|sitiuweb=|editorial=}}</ref>

N'España hai tres grupos:
* [http://www.pm.org/groups/353.html Barcelona.pm] (persona de contautu: Alex Muntada)
* [http://www.pm.org/groups/234.html Madrid.pm] (persona de contautu: Diego Kuperman)
* [http://www.pm.org/groups/283.html Granada.pm]<ref>{{Cita web|url=http://granada.pm/|títulu=Granada Perl Mongers|fechaaccesu=14 de marzu de 2016|autor=|enllaceautor=|fecha=|idioma=|sitiuweb=|editorial=|urlarchivu=https://web.archive.org/web/20180809190323/http://granada.pm/|fechaarchivu=2018-08-09}}</ref> (persona de contautu: [[Juan Julián Merelo Guervós]]

== Ver tamién ==

* [[:en:The Perl Foundation|La Fundación Perl]] (n'inglés)
* [[:en:Perl Object Environment|POE]] – la Redolada Oxeto de Perl (n'inglés)
* [[:en:Perl Data Language|Perl Data Language]] (n'inglés)
* [[:en:Plain Old Documentation|Plain Old Documentation]] – una ferramienta de documentación pa Perl (n'inglés)
* [[:en:Just another Perl hacker|Just another Perl hacker]] (n'inglés)
* [[:en:Obfuscated Perl contest|Obfuscated Perl contest]] (n'inglés)
* [[:en:Perl Mongers|Perl Mongers]] (n'inglés)
* [[:en:PerlScript|PerlScript]] (n'inglés)
* [[:en:Comparison of programming languages|Comparison of programming languages]] (n'inglés)
* [[:en:Programming Perl|Programming Perl]] (el ''llibro Camellu''), ISBN 0-596-00027-8 (n'inglés)
* [[:en:Learning Perl|Learning Perl]], Cuarta edición (el ''llibru Llama''), ISBN 0-596-10105-8 (n'inglés)
* [[:en:Perl Cookbook|Perl Cookbook]], ISBN 0-596-00313-7 (n'inglés)

== Referencies ==
{{llistaref|2}}

== Enllaces esternos ==
{{Commonscat|Perl (programming language)}}
{{Wikillibros|Programación en Perl}}
* [http://www.perl.org/ Perl.org] – El direutoriu Perl
* [http://www.perl.com/ Perl.com] – Perl n'[[O'Reilly & Associates|O'Reilly Network]]
* [http://perldoc.perl.org/ Perldoc at Perl.org] – documentación online de Perl
* [https://github.com/zipf/perldoc-ye Documentación Perl n'español] Proyeutu de traducción de les páxines del manual de Perl a español.
* Desenvolvimientu de [http://dev.perl.org/perl5/ Perl 5] y [http://dev.perl.org/perl6/ Perl 6] {{Webarchive|url=https://web.archive.org/web/20060207094455/http://dev.perl.org/perl6/ |date=2006-02-07 }}
* [http://www.parrotcode.org/ Parrot máquina virtual] {{Webarchive|url=https://web.archive.org/web/20120516114613/http://www.parrot.org/ |date=2012-05-16 }}

;Distribuciones
* [http://www.cpan.org/ The CPAN] – ''Comprehensive Perl Archive Network'', distribución fonte de Perl
* [http://www.activestate.com/ ActiveState ActivePerl] – Perl para [[Microsoft Windows]] y otres plataformes
* [http://www.indigostar.com/indigoperl.htm IndigoPerl] {{Webarchive|url=https://web.archive.org/web/20070405094943/http://www.indigostar.com/indigoperl.htm |date=2007-04-05 }} – otra distribución de Perl pa Microsoft Windows
* [http://cygwin.com/ Cygwin] tamién distribúi Perl en Windows
* [http://strawberryperl.com/ Strawberry Perl] - una implementación open-source pa Windows.
* [https://web.archive.org/web/20040815062127/http://dmoz.org/Computers/Programming/Languages/Perl/ sitio web sobre Perl] nel [[Open Directory Project]]






{{Tradubot|Perl}}

{{control d'autoridaes}}
[[Categoría:Perl| ]]
[[Categoría:Llinguaxes de programación d'altu nivel]]
[[Categoría:Llinguaxes de programación]]
[[Categoría:Software de 1987]]
[[Categoría:Wikipedia:Páxines con enllaces interllingüísticos]]
Perl ye un llinguaxe de programación diseñáu por Larry Wall en 1987. Perl toma carauterístiques del llinguaxe C, del llinguaxe interpretáu bourne shell (sh), AWK, sei, Lisp y, nun grau inferior, de munchos otros llinguaxes de programación.

Estructuralmente, Perl ta basáu nun estilu de bloques como los del C o AWK, y foi llargamente adoptáu pola so maña nel procesáu de testu y nun tener nenguna de les llimitaciones de los otros llinguaxes de script.

 Historia 
Larry Wall empezó a trabayar en Perl en 1987 mientres trabayaba como programador en Unisys (inglés) y anunció la versión 1.0 nel grupu de noticies comp.sources.misc el 18 d'avientu de 1987. El llinguaxe espandióse rápido nos siguientes años. Perl 2, publicáu en 1988, apurrió un meyor motor d'espresiones regulares. Perl 3, publicáu en 1989, añadió soporte pa datos binarios.

Hasta 1991 la única documentación de Perl yera una simple (y cada vez más llarga) páxina de manual Unix. En 1991 publicóse [[Programming
Perl]] (el llibru del camellu) y convirtióse na referencia de facto del llinguaxe. Coles mesmes, el númberu de versión de Perl saltó a 4, non por marcar un gran cambéu nel llinguaxe, sinón por identificar a la versión que taba documentada nel llibru.

Perl 4 traxo consigo una serie de llanzamientos de caltenimientu, rematando en Perl 4.036 en 1993. Nesti puntu, Larry Wall abandonó Perl 4 pa empezar a trabayar en Perl 5. Perl 4 quedar nesa versión hasta güei.

El desenvolvimientu de Perl 5 siguió en 1994. La llista de corréu perl5-porters establecer en mayu de 1994 pa coordinar el trabayu d'adautación de Perl 5 a distintes plataformes. Ye'l primer foru pa desenvolvimientu, caltenimientu y adautación de Perl 5.

Perl 5 foi publicáu'l 17 d'ochobre de 1994. Foi casi una completa reescritura del intérprete y añadió munches nueves carauterístiques al llinguaxe, incluyendo oxetos, referencies, paquetes y módulos. A destacar, los módulos aproven d'un mecanismu pa estender el llinguaxe ensin modificar l'intérprete. Esto dexó estabilizar el so nucleu principal, amás de dexar a los programadores de Perl añader nueves carauterístiques.

El 26 d'ochobre de 1995, creóse'l Comprehensive Perl Archive Network (CPAN). CPAN ye una coleición de sitio web qu'almacenen y distribúin fontes en Perl, binarios, documentación, scripts y módulos. Orixinalmente, cada sitiu CPAN tenía de ser aportáu al traviés de la so propiu URL; anguaño, http://www.cpan.org redirecciona automáticamente a unu de los cientos de repositorios espeyu de CPAN.

En 2008, Perl 5 sigue siendo calteníu. Carauterístiques importantes y delles construcciones esenciales fueron añadíes, incluyendo soporte Unicode, filos, un soporte importante pa la programación empobinada a oxetos y otres meyores.

 Nome 
Perl llamóse orixinalmente "Pearl". Larry Wall quería da-y al llinguaxe un nome curtiu con connotaciones positives; asegura que miró (y refugó) toles combinaciones de trés y cuatro lletres del diccionariu. Tamién consideró nomalo como la so esposa Gloria. Wall afayó antes del llanzamientu oficial que yá esistía un llinguaxe de programación llamáu PEARL y camudó la ortografía del nome.

El nome de normal empieza con mayúscula (Perl) cuando se refier al llinguaxe y con minúscula (perl) cuando se refier al propiu programa intérprete por cuenta de que los sistemes de ficheros Unix estremen mayúscules y minúscules. Antes del llanzamientu de la primer edición de Programming Perl yera común referise al llinguaxe como perl; Randal L. Schwartz, sicasí, forzó'l nome en mayúscula nel llibru por que destacara meyor cuando fuera impresu. La distinción foi subsiguientemente adoptada pola comunidá.

El nome ye descritu dacuando como "PERL" (por Practical Yxtraction and Report Language - Llinguaxe Práuticu pa la Estracción ya Informe). Anque esta espansión prevaleció en munchos manuales actuales, incluyendo la páxina de manual de Perl, ye un retroacrónimo y oficialmente'l nome nun quier dicir nada. La ortografía de PERL en mayúscules ye por eso usada como xíriga pa detectar a individuos ayenos a la comunidá. Sicasí, suxiriéronse dellos retroacrónimos, incluyendo'l cómicu Pathologically Eclectic Rubbish Lister (Contabilizador de Basura Patológicamente Eclécticu).

 El símbolu del camellu 

Perl simbolízase xeneralmente por un camellu d'una sola gorrumba (camellu arábigu o dromedariu), que foi la imaxe escoyida pol editor O'Reilly pa la cubierta de Programming Perl, que por consiguiente adquirió'l nome de El Llibru del Camellu. O'Reilly ye propietariu d'esti símbolu como marca rexistrada, pero diz qu'usa los sos derechos llegales namái pa protexer la "integridá ya impautu d'esti símbolu".
O'Reilly dexa l'usu non comercial del símbolu, y ufierta logos Programming Republic of Perl y botones Powered by Perl.

Dende va unos años, y p'evitar esti tipu de problemes cola llicencia comercial, la Fundación Perl ellaboró nuevos logotipos basaos nuna cebolla, arriendes de les conferencies añales que Larry Wall ufierta col títulu: State of the Onion ("Estáu de la Cebolla") Onion pronúnciase bien paecíu a Union, polo que suena paecíu a State of the Union ("Discursu del Estáu de la Unión Estáu de la Unión"), eventu nel cual el Presidente de los Estaos Xuníos informa a los ciudadanos del estáu en que s'atopa'l so país.

 Descripción 
La páxina de manual Unix  diz:

 Carauterístiques 
La estructura completa de Perl deriva llargamente del llinguaxe C. Perl ye un llinguaxe imperativu, con variables, espresiones, asignaciones, bloques de códigu delimitados por llaves, estructures de control y subrutines.

Perl tamién toma carauterístiques de la programación shell. Toles variables son marcaes con un Sigilo precedente (Sigil, n'inglés). Los sigilos identifiquen inequívocamente los nomes de les variables, dexando a Perl tener una rica sintaxis. Notablemente, los sigilos dexen interpolar variables direutamente dientro de les cadenes de calteres (string). Como nos shell, Perl tien munches funciones integraes pa xeres comunes y p'aportar a los recursos del sistema.

Perl toma les llistes del Lisp, hash (memoria asociativa) del AWK y espresiones regulares del sei. Tou esto simplifica y facilita toles formes del analís sintácticu, manexu de testu y xeres de xestión de datos.

En Perl 5, añadiéronse carauterístiques pa soportar estructures de datos complexes, funciones de primer orde (p. y. clausures como valores) y un modelu de programación empobinada a oxetos. Estos inclúin referencies, paquetes y una execución de métodos basada en clases y la introducción de variables d'ámbitu léxicu, que fizo más fácil escribir códigu robezu (xunto col pragma strict). Una carauterística principal introducida en Perl 5 foi l'habilidá de empaquetar códigu reutilizable como módulos. Larry Wall indicó más palantre que "la intención del sistema de módulos de Perl 5 yera sofitar la crecedera de la cultura Perl en vegada del nucleu de Perl".Usenet post, May 10th 1997, with ID 199705101952.MAA00756@wall.org.

Toles versiones de Perl faen el tipificado automáticu de datos y la xestión de memoria. L'intérprete conoz el tipu y requerimientos d'almacenamientu de cada oxetu nel programa; reserva y llibera espaciu pa ellos según sía necesariu. Les conversiones llegales de tipu facer de forma automática en tiempu d'execución; les conversiones illegales son consideraes errores fatales.

 Diseñu 
El diseñu de Perl puede ser entendíu como una respuesta a trés amplies enclinos de la industria informático: rebaxa de los costos nel hardware, aumentu de los costos llaborales y les meyores na teunoloxía de compiladores. Enantes, munchos llinguaxes d'ordenador como Fortran y C, fueron diseñaos pa faer un usu eficiente d'un hardware caru. En contraste, Perl ye diseñáu pa faer un usu eficiente de los costosos programadores d'ordenador.

Perl tien munches carauterístiques que faciliten la xera del programador a cuenta de unos requerimientos de CPU y memoria mayores. Estes inclúin xestión de memoria automática; tipu de datu dinámicu; strings, llistes y hashes; espresiones regulares; introspeición y una función eval().

Larry Wall foi adomáu como llingüista y el diseñu de Perl foi bien aprendíu con principios llingüísticos. Exemplos inclúin la Codificación Huffman (les construcciones más comunes tienen de ser les más curties), bona distribución (la información importante tien de dir primeru) y una llarga coleición de primitives del llinguaxe. Perl favorez les construcciones del llinguaxe, tan naturales, como pa los humanos son la llectura y l'escritura, inclusive si eso fai más complicáu al intérprete Perl.

La sintaxis de Perl reflexa la idea de que "coses que son distintes tienen de paecer distintes". Por casu, esguilares, arrays y hashes tienen distintu sigilo. Índices de array y claves hash usen distintes clases de paréntesis. Strings y espresiones regulares tienen distintes allindiadores estándar. Esti aproximamientu puede oldease con llinguaxes como Lisp, onde la mesma construcción S-espresión y sintaxis básica usar pa munchos y variaos propósitos.

Perl tien carauterístiques que soporten una variedá de paradigmes de programación, como la imperativa, funcional y la Programación empobinada a oxetos empobinada a oxetos. Coles mesmes, Perl nun obliga a siguir nengún paradigma en particular, nin obliga al programador a escoyer dalguna d'elles.

Hai un ampliu sentíu de lo práctico, tantu nel llinguaxe Perl como na comunidá y la cultura que la arrodien. El prefaciu de Programming Perl empieza con, "Perl ye un llinguaxe pa tener el to trabayu termináu". Una consecuencia d'esto ye que Perl nun ye un llinguaxe ordenáu. Inclúi carauterístiques si la xente usar, tolera esceiciones a les regles y emplega la heurística pa resolver ambigüedaes sintáctiques. Por cuenta de la naturaleza indulxente del compilador, dacuando los errores pueden ser difíciles d'atopar. Falando del variáu comportamientu de les funciones internes nos contestos de llista y esguilar, la páxina de manual de perlfunc(1) diz "Polo xeneral, faen lo que'l to quieras, siempres que quieras la coherencia."

Perl tien dellos lemas que tresmiten aspeutos del so diseñu y usu. Unu ye There's more than one way to do it (Hai más d'una forma de faelo) (TMTOWTDI, usualmente pronunciáu 'Tim Toady'). Otros son "Perl: la motosierra del exércitu Suizu de los llinguaxes de programación" y "Llendes imprecises". Una meta prefijada de Perl ye faer les coses fáciles de forma fácil y les xeres difíciles, posibles. A Perl tamién se-y llamó "L'esparadrapu d'Internet".

 Aplicaciones 
miniaturadeimagen|250px|La LAMP entiendi Perl (equí con Squid)
Perl tien munches y variaes aplicaciones, gracies a la disponibilidad de munchos módulos estándares y de terceres partes.

Usóse dende los primeros díes de la Web pa escribir guiones (scripts) CGI. Ye una de les "tres Pes" (Perl, Python y PHP), que son los llinguaxes más populares pa la creación d'aplicaciones Web, y ye un componente integral de la popular solución LAMP pal desenvolvimientu web. Grandes proyeutos escritos en Perl son Slash, IMDb y UseModWiki, un motor de Wiki. Munchos sitios web con altu tráficu, como Amazon.com y Ticketmaster.com usen Perl estensamente.

Perl úsase de cutiu como un "llinguaxe pegamento", amestando sistemes y interfaces que nun fueron diseñaos específicamente pa interoperar; y pal "escarbáu de datos", convirtiendo o procesando grandes cantidaes de datos pa xeres como por casu crear informes. Ello ye que estes fortaleces tán íntimamente xuníes. La so combinación fai a Perl una popular ferramienta de propósitu xeneral pa los Alministrador de sistemes alministradores de sistemes, especialmente en programes pequeños que pueden ser escritos y executaos nuna sola llinia de comandos.

Perl ye tamién llargamente usáu en finances y bioinformática, onde ye apreciáu pola so desenvuelvo rápido, tantu d'aplicaciones como d'esplegue, según l'habilidá de remanar grandes volúmenes de datos.

 Implementación 
Perl ta implementáu como un intérprete, escritu en C, xunto con una gran coleición de módulos, escritos en Perl y C. La distribución fonte tien, en 2005, 12 MB cuando se empaqueta y estrúi nun ficheru tar. L'intérprete tien 150.000 llinies de códigu C y se compila nun ejecutable de 1 MB nes arquitectures de hardware más típiques. De forma alternativa, l'intérprete puede ser compilado como una biblioteca y ser enfiñida n'otros programes. Hai cerca de 500 módulos na distribución, sumando 200.000 llinies de Perl y unes 350.000 llinies adicionales de códigu C. Enforma del códigu C nos módulos consiste en tables de codificación de calteres.

L'intérprete tien una arquiteutura empobinada a oxetos. Tolos elementos del llinguaxe Perl —esguilares, llistes, hashes, referencies a códigu, manejadores d'archivu— tán representaos nel intérprete como estructures C. Les operaciones sobre estes estructures tán definíes como una numberosa coleición de macros, typedef y funciones; esto constitúi l'API C de Perl. La API Perl puede ser esconcertante pal ensin empecipiar, pero los sos puntos d'entrada siguen un esquema de nomes coherente, qu'ayuda a los que quieran utilizala.

La execución d'un programa Perl puede estremase, generosamente, en dos fases: tiempu de compilación y tiempu d'execución.Una descripción del intérprete Perl 5 puede atopase en Programming Perl, 3rd Ed., capítulu 18 (inglés) En tiempu de compilación l'intérprete parsea el testu del programa nun árbol sintácticu. En tiempu d'execución, executa'l programa siguiendo l'árbol. El testu ye parseado namái una vegada y l'árbol sintácticu ye optimizáu antes de ser executáu, por que la fase d'execución sía relativamente eficiente. Les optimizaciones del árbol sintácticu en tiempu de compilación inclúin simplificación d'espresiones constantes, espardimientu del contestu y optimización en cachos sueltos de códigu. Sicasí, les fases de compilación y execución pueden añerase: un bloque BEGIN execútase en tiempu de compilación, ente que una función eval empecipia una compilación mientres una execución. Dambes operaciones tán implícites n'otres -de forma notable, la clausa use que carga biblioteques, conocíes en Perl como módulos, implica un bloque BEGIN.

Perl ye un llinguaxe dinámicu y tien una gramática Gramátiques sensibles al contestu sensible al contestu que puede quedar afeutada pol códigu executáu mientres una fase d'execución entemedia (Ver exemplos.). Por eso Perl nun puede ser parseado por aciu una aplicación direuta d'analizadores sintácticos/parseadores Lex/Yacc. Sicasí, l'intérprete implementa'l so propiu analizador léxicu, que coordináu con un parseador modificáu GNU bison resuelve les ambigüedaes del llinguaxe. Díxose que "namái perl puede parsear Perl", queriendo dicir que namái'l intérprete Perl (perl) puede parsear el llinguaxe Perl (Perl). La razón d'esto atestíguase poles persistentes imperfecciones d'otros programes qu'entamen la xera de parsear Perl, como los analizadores de códigu y los autu-indentadores, que tienen que tráteles non yá coles munches formes d'espresar inequívocamente construcciones sintáctiques, sinón tamién col fechu de que tamién Perl nun puede, polo xeneral, ser parseado ensin antes ser executáu.

El caltenimientu del intérprete Perl, a lo llargo de los años, volvióse cada vez más difícil. El nucleu tuvo en continuu desenvolvimientu dende 1994. El códigu foi optimizáu en rendimientu por cuenta de la simplicidá, claridá y unes interfaces internes más fuertes. Nueves carauterístiques fueron añadíes, calteniendo inda, compatibilidá virtualmente completa escontra tras coles primeres versiones. El tamañu y la complexidá del intérprete son una barrera pa los desarrolladores que deseyen trabayar nél.

Perl ye distribuyíu con unos 120.000 test funcionales. Estos execútense como parte del procesu normal de construcción y comprueben estensamente al intérprete y a los sos módulos principales. Los desarrolladores Perl confíen nos test funcionales p'asegurase que los cambeos nel intérprete nun introducen errores; recíprocamente, los usuarios Perl que vean al intérprete pasar los test funcionales nel so sistema pueden tener un altu grau d'enfotu de que ta funcionando afechiscamente.

Nun hai una especificación o estándar escritu pal llinguaxe Perl y nun hai planes de crear unu pa la versión actual de Perl. Siempres esistió namái una implementación del intérprete. Esti intérprete, xunto colos test funcionales, formen la especificación de facto del llinguaxe.

 Disponibilidad 
Perl ye software llibre y ta llicenciáu so la Llicencia Artística y la GNU General Public License. Esisten distribuciones disponibles pa la mayoría de sistemes operativos. Ta especialmente estendíu en Unix y en sistemes similares, pero foi portáu a les plataformes más modernes (y otres más obsoletas). Con namái seis esceición confirmaes, pue ser compilado dende'l códigu fuente en tolos Unix, compatibles POSIX o cualesquier otra plataforma Unix compatible. Sicasí, esto nun ye de normal necesariu, porque Perl ta incluyíu por defectu na instalación de los sistemes operativos más populares.

Por cuenta de los cambeos especiales necesarios pa soportar al Mac OS Classic, esiste una adautación especial llamada MacPerl.

 GNU/Linux 
Perl ta preinstalado nes distribuciones más populares de GNU/Linux incluyendo Gentoo, Slackware, Mandriva, Debian, RedHat y SUSE.

 Windows 
Los usuarios de Microsoft Windows de normal instalen una distribución binaria de Perl. Compilar Perl dende'l códigu fonte so Windows ye posible, pero la mayoría de les instalaciones nun disponen del necesariu compilador de C.

La capa de emulación Cygwin apurre otra forma de correr Perl baxu Windows. Cygwin apurre en redolada paecida al Unix en Windows qu'inclúi gcc, polo que compilar Perl dende'l códigu ye una opción accesible pa los usuarios que prefieren esta opción.

En xunu de 2006, win32.perl.org foi llanzáu por Adam Kennedy en nome de la Fundación Perl. Ye una comunidá web "pa tou lo rellacionao con Windows y Perl".

 Estructura del llinguaxe 
 Programa exemplu 
En Perl, el programa canónicu "Hola mundu" ye:
#!/usr/bin/perl
print "¡Hola mundu!\n";
La primer llinia contién el shebang (par de calteres qu'identifica'l testu que sigue), que lu indica al sistema operativu ónde atopar l'intérprete de Perl. La segunda imprime'l string ¡Hola mundu! y un calter de nueva llinia.

El shebang ye la forma normal pa invocar al intérprete nos sistemes Unix. Los sistemes Windows pueden siguir utilizándolo o pueden acomuñar la estensión d'archivu .pl col intérprete Perl. Dellos editores de testu tamién usen la llinia shebang como una pista sobre la manera de trabayu en que tienen d'operar. Si'l programa ye executáu por perl y non invocáu pol shell, la llinia qu'empieza pol shebang ye parseada pa interpretar les opciones. N'otru casu, ye inorada. Pa ver los detalles d'esto, consultar la páxina de manual perlrun.

 Tipos de datos 
Perl tien trés tipo de datos: esguilares, llistes
y hashes:
 Un esguilar ye un solu valor; puede ser un númberu, un string (cadena de calteres) o una referencia
 Una llista ye una coleición ordenada d'esguilares (una variable qu'almacena una llista llámase array)
 Un hash, o memoria asociativa, ye un mapeo de strings a esguilares; los strings llámense claves y esguilar valores.

Toles variables tán precedíes por un sigilo, qu'identifica'l tipu de datu que ye aportáu (non el tipu de datu de la mesma variable). Puede usase el mesmu nome pa variables de distintos tipos, ensin que tengan conflictos.
$var # un esguilar
@var # un array
%var # un hash
Los númberos escribir de la forma avezada; los strings tán arrodiaos ente comines de delles clases.
$n = 42;
$nome = "juan";
$color = 'colloráu';
Perl va convertir los strings en númberos y viceversa dependiendo del contestu en que sían usaos. Nel siguiente exemplu los strings $n y $m son trataos como númberos cuando son argumentos del operador suma. Esti códigu imprime'l númberu '5', refugando cualesquier información non numbérica de la operación y dexando los valores de les variables intactos. (L'operador de concatenación nun ye +, sinón ..)
$n = "3 mazanes";
$m = "2 naranxes";
print $n + $m;
Perl tamién tien un contestu booleano qu'utiliza na evaluación de declaraciones condicionales. Los siguientes valores en Perl evalúen toos como falsu:
$falsu = 0; # el númberu cero $falsu =
0.0; # el númberu cero como flotante $falsu =
'0'; # el string cero $falsu =
""; # el string vacíu $falsu =
undef; # el valor devueltu por undef
Tolos demás valores evaluar a verdaderu. Esto inclúi'l curiosu string autu-descriptivu "0 pero verdaderu", que de fechu ye 0 como númberu, pero verdaderu como booleano. (Cualesquier string non numbéricu tamién va tener esta propiedá, pero esti string en particular ye ignoráu por Perl en contestos numbéricos). Les espresiones booleanas evaluaes tamién devuelven valores esguilares. Anque la documentación nun indica qué valor particular devuélvese como verdaderu o falsu (y polo tanto non fiable), munchos operadores booleanos devuelven 1 por verdaderu y el string vacíu pa falsu (qu'evalúa a cero en contestu numbéricu). La función defined() diz-y si la variable tien dalgún valor. Nel exemplu anterior defined($falsu) va ser verdaderu con cada unu de los valores anteriores, sacante undef.
Si, específicamente, quier asegurase de tener un resultáu 1/0 (como en C), precisa realizar el cálculu siguiente:
my $resultáu_real = $resultancia_booleano ? 1 : 0;
Una llista defínese listando los sos elementos, dixebraos por comes y arrodiaos por paréntesis onde asina sía riquíu pola precedencia de los operadores.
@puntuaciones = (32, 45, 16, 5);
Un hash puede ser inicializado dende una llista de pares clave/valor.
%favoritu = (
 joe => 'colloráu', sam
 => 'azul', );
Los elementos individuales d'una llista son aportaos utilizando un índiz numbéricu, dientro de corchetes. Valores individuales nun hash son aportaos utilizando la correspondiente clave, dientro de llaves. El sigilo $ identifica que l'elementu aportáu ye un esguilar.
$puntuaciones[2] # un elementu de puntuaciones favoritu{joe} # un valor de %favoritu 

Múltiples elementos pueden ser aportaos usando nel so llugar el sigilo @ (identificando la resultancia como una llista).
@puntuaciones[2, 3, 1] # tres elemento de puntuaciones favoritu{'joe', 'sam'} # dos valores de %favoritu 

El númberu d'elementos nun array puede ser llográu evaluando'l array en contestu esguilar o cola ayuda del sigilo $#. Esti postreru da l'índiz del últimu elementu dientro del array, non el númberu d'elementos.
$numbero = @amigos;
$#amigos; # l'índiz del últimu elementu n'amigos amigos+1; # de normal el númberu d'elementos en @amigos, #
 que ye unu más que $#amigos porque'l primer elementu tien l'índiz 0, non 1
Hai unes poques funciones qu'operen sobre hashes enteros.
@nomes_de_veceros = keys %direiciones; # guarda en @nomes_de_veceros toles claves de %direiciones
@direcciones_de_email = values %direiciones; # guarda en @direcciones_de_email tolos valores de %direiciones

 Estructures de control 

Perl tien delles clases d'estructures de control.

Tien estructures de control empobináu al bloque, similar a los de los llinguaxes de programación C y Java. Les condiciones tán arrodiaes por paréntesis y los bloques subordinaos por llaves:
 ''etiqueta'' while ( ''condición'' ) {... }
 ''etiqueta'' while ( ''condición'' ) {... } continue {... }
 ''etiqueta'' for ( ''espresión inicial''; ''espresión condicional''; ''espresión incremental'' ) {... }
 ''etiqueta'' foreach ''var'' ( ''llista'' ) {... }
 ''etiqueta'' foreach ''var'' ( ''llista'' ) {... } continue {... }
 if ( ''condición'' ) {... }
 if ( ''condición'' ) {... } else {... } 
 if ( ''condición'' ) {... } elsif ( ''condición'' ) {... } else {... } 
Cuando se controla a una sola declaración, los modificadores de declaración apurren una sintaxis más llixera:
 ''declaración'' if ''condición'';
 ''declaración'' unless ''condición'';
 ''declaración'' while ''condición'';
 ''declaración'' until ''condición'';
 ''declaración'' foreach ''llista'';
Los operadores lóxicos cortucircuitu son de normal usaos pa controlar el fluxu del programa a nivel d'espresión:
 ''expr'' and ''expr''
 ''expr'' or ''expr''
Les pallabres clave de control de fluxu next, last, return y redo son espresiones, polo que pueden ser usaes colos operadores cortucircuitu.

Perl tamién tien dos construcciones implícites pa bucles:
 ''resultancies'' = grep {... } ''llista''
 ''resultancies'' = map {... } ''llista''
grep devuelve tolos elementos de llista en que'l bloque subordináu evalúa a verdaderu. map evalúa'l bloque subordináu per cada elementu de llista y devuelve una llista de los valores resultantes. Estes construcciones dexen un estilu simple de programación funcional.

La declaración switch (llamada "given"/"when") esiste dende la versión 5.10:
 use 5.10.1; # o posterior
 given ($variable) {
 when (''condición'') { ... }
 when (''condición'') { ... }
 default { ... }
 }

Perl inclúi una declaración goto etiqueta, pero ye usada raramente. Les situaciones onde n'otros llinguaxes utilízase goto nun asoceden tan de cutiu en Perl por cuenta de les sos amplies opciones de control de fluxu.

Esiste tamién una declaración goto &sub que realiza una llamada 'final'. Termina la subrutina actual y darréu llama a la sub especificada. Esto úsase en situaciones onde una nueva subrutina puede realizar una xestión de la pila más eficiente que'l mesmu Perl (porque típicamente nun se riquir nengún cambéu na pila actual), y nuna recursión bien fonda esti tipu de llamaes puede tener un sustancial impautu positivu nel funcionamientu porque evita la sobrecarga de la xestión contexto/pila nel momentu de retornar.

 Subrutinas 
Les subrutines definir cola pallabra clave sub ya invocaes a cencielles nomándoles. Si la subrutina en cuestión nun foi inda declarada, ye necesariu, pal procesu d'analís sintácticu, poner los paréntesis.
foo(); # paréntesis necesarios equí...
sub foo {... }
foo; #... pero non equí 

Una llista d'argumentos pueden ser indicaos dempués del nome de la subrutina. Los argumentos pueden ser esguilares, llistes o hashes.
foo $x, @y, %z;
Los parámetros d'una subrutina nun precisen ser declaraos, nin en númberu nin en tipu; ello ye que pueden variar en cada llamada. Los arrays son espandíos a los sos elementos, los hashes a una llista de pares clave/valor y tol conxuntu ye pasáu a la subrutina como una indiferenciada llista d'esguilares.

Cualesquier de los argumentos pasaos tán disponibles pa la subrutina nel array especial @_. Los elementos de @_ son acomuñaos a los argumentos actuales; camudando un elementu de @_ camuda l'argumentu correspondiente.

Los elementos de @_ pueden ser aportaos colos subíndices de la forma normal.
$_[0], $_[1]
Sicasí, el códigu resultante pue ser malo de lleer y los parámetros tener una semántica de pase per referencia, que puede resultar daqué non deseable.

Un modismu común ye asignar @_ a una llista de variables con nomes.
my($x, $y, $z) = @_;
Esto afecta tantu a la mnemónica de los nomes de los parámetros como a la semántica de los valores pasaos por valor. La pallabra clave my indica que les siguientes variables tán léxicamente enfiñíes nel bloque que les contienen.

Otru modismu ye sacar los parámetros de @_. Esto ye bien común cuando la subrutina toma un namái argumentu.
my $x = shift; # Si nun se diz nada, referímonos a @_
Les subrutinas pueden devolver valores.
return 42, $x, @y, %z;
Si la subrutina nun sale vía declaración return, entós devuelve la última espresión evaluada nel cuerpu de la subrutina. Arrays y hashes nel valor de torna son espandíos a una llista d'esguilares, igual que si fueren argumentos d'una función.

La espresión devuelta ye evaluada nel contestu de la llamada de la subrutina; esto puede sorprender al despreveníu.
sub llista { (4, 5, 6) }
sub array { @x = (4, 5, 6); @x }
 
$x = llista; # devuelve 6 - últimu elementu de la llista $x
= array; # devuelve 3 - númberu d'elementos de la llista @x
= llista; # devuelve (4, 5, 6)
@x = array; # devuelve (4, 5, 6)
Una subrutina puede afayar el so contestu de llamada cola función wantarray.
sub cualesquier { wantarray ? (1, 2) : "Naranxes" }
 
$x = cualesquier; # devuelve "Naranxes"
@x = cualesquier; # devuelve (1, 2)

 Espresiones regulares 

El llinguaxe Perl inclúi una sintaxis especializada pa escribir espresiones regulares y l'intérprete contién un motor pa empareyar strings con espresiones regulares. El motor d'espresiones regulares usa un algoritmu de Vuelta Tras (backtracking), estendiendo les sos capacidaes dende'l simple axugamientu de patrones simples cola captura y sustitución de strings. El motor d'espresiones regulares derivar de regex, escritu por Henry Spencer.

La sintaxis d'espresiones regulares foi orixinalmente tomada de les espresiones regulares de Unix Versión 8. Sicasí, estremóse yá antes del primer llanzamientu de Perl y dende entós foi incorporando munches más carauterístiques. Otros llinguaxes y aplicaciones tán adoptando les espresiones regulares de Perl (PCRE) en cuenta de les espresiones regulares POSIX, incluyendo PHP, Ruby, Java y el Servidor HTTP Apache.

L'operador m// (empareya) dexa comprobar un axugamientu per mediu d'una espresión regular. (Pa embrivir, el precedente m puede ser omitíu.) Nel casu más simple, una espresión como:
$x =~ m/abc/
evalúa a verdaderu si y namái si el string $x empareya cola espresión regular abc.

Partes de la espresión regular pueden ser incluyíes ente paréntesis: les partes correspondientes d'un string empareyáu son prindaes. Los strings prindaos son asignaos de forma secuencial a les variables internes $1, $2, $3,... y una llista de strings prindaos devuélvese como valor del axugamientu.
$x =~ m/a(.)c/; # prinda'l calter ente 'a' y 'c' y guardar en $1
L'operador s/// (sustitución) especifica una operación de busca y reemplazu:
$x =~ s/abc/aBc/; # Convierte la b en mayúscula 

Les espresiones regulares en Perl pueden tomar unos modificadores. Son sufixos d'una sola lletra que modifiquen el significáu de la espresión:
$x =~ m/abc/i; # axugamientu independientemente de si tán en mayúscula o minúscula $x
=~ s/abc/aBc/g; # busca y reemplazu global (a lo llargo de tol ''string'') 
Les espresiones regulares pueden ser trupes y críptiques. Esto ye porque la sintaxis de les espresiones regulares ye desaxeradamente compacta, xeneralmente usando calteres sueltos o pares de calteres que representen les sos operaciones. Perl sollivia un pocu esti problema col modificador /x que dexa a los programadores poner espaciu en blancu y comentarios dientro de les espresiones regulares:
$x =~ m/a # empareya una 'a'
 . # empareya cualquier calter
 c # empareya una 'c'
 /x;
Un usu común de les espresiones regulares ye'l d'especificar allindiadores de campos al operador split:
@pallabres = split m/,/, $llinia; # estrema la llinia de valores separaos por comes
L'operador split complementa la captura de string. La captura de string devuelve les partes d'un string qu'empareyen con una espresión regular; split devuelve les partes que nun empareyar.

 Interfaz con bases de datos 
Perl ta llargamente favorecíu pa les aplicaciones de bases de datos. Les sos facilidaes de manexu de testu son bones pa xenerar consultes SQL; arrays, hashes y la xestión de memoria automática fai fácil recoyer y procesar los datos devueltos.

Nes primeres versiones de Perl, les interfaces de bases de datos fueron creaes enllazando l'intérprete con una biblioteca de base de datos dende'l llau del veceru. Esto yera daqué cabileñu; un problema en particular foi que'l ejecutable perl resultante taba acutáu a usar namái una interfaz de base de datos, la que fuera enllazada. Tamién, reenlazar l'intérprete yera lo suficientemente dificultosu que namái foi realizáu pa delles de les más famoses ya importantes bases de datos.

En Perl 5, les interfaces de bases de datos tán implementaes pol módulu Perl DBI. El módulu DBI presenta una única interfaz a les aplicaciones Perl, independiente de les bases de datos, ente que los módulos DBD:: (Controlador de base de datos) remanen los detalles d'accesu a unes 50 bases de datos distintos. Esisten controladores DBD:: pa la mayor parte de les bases de datos ANSI SQL.

 Comparancia de funcionamientu 
El "Computer Language Shootout Benchmarks" compara'l funcionamientu de implementaciones de problemes de programación típicos, en diversos llinguaxes. Los sos implementaciones Perl de normal tomen más memoria que les implementaciones n'otros llinguaxes, y esto varia los resultaos de velocidá. Les prestaciones de Perl son similares a les d'otros llinguaxes como Python, PHP o Ruby, pero más lentu que la mayor parte de llinguaxes compilados.

Perl puede ser más lentu qu'otros llinguaxes faciendo lo mesmo porque tien que compilar el códigu fonte cada vez que cuerre'l programa. En "A Timely Start", Jean-Louis Leroy atopó que los sos scripts en Perl tardaben muncho más tiempu en correr que lo qu'él esperaba porque l'intérprete perl perdía la mayor parte del tiempu buscando y compilando los módulos. Como Perl nun puede salvar el so compilación entemedia como la faen Java, Python y Ruby, los scripts Perl traen esta sobrecarga en cada execución. La sobrecarga nun ye un problema cuando la fase d'execución ye bien llarga, pero puede sesgar significativamente en tiempos d'execución bien curtios, como s'atopa de cutiu nos benchmarks. Una vegada que perl empecipia la fase d'execución, sicasí, pue ser bien rápido y típicamente supera a otros llinguaxes dinámicos. Teunoloxíes como mod perl superen esto guardando'l programa compilado en memoria ente execuciones, o Class::Autouse que retrasa la compilación de partes del programa hasta que son necesaries.

 Optimizando 
Nicholas Clark, un desarrollador principal de Perl, diserta sobre delles meyores nel diseñu con Perl y otres soluciones en "When perl is not quite fast enough" . Les rutines más crítiques d'un programa Perl pueden escribise en C o inclusive en llinguaxe ensamblador con XS o Inline.

Optimizar Perl puede riquir una conocencia íntima del so funcionamientu en llugar de la maña col llinguaxe y la so sintaxis, significando que'l problema ta cola implementación de Perl en llugar de col llinguaxe mesmu. Perl 6, la siguiente versión, va tomar dalgunes d'estes idees como lleiciones, qu'otros llinguaxes yá aprendieron.

 Futuru 

Nel añu 2000, na conferencia Perl, Jon Orwant fixo un pidimientu pa una nueva versión del llinguaxe.Trescripción de la charra de Larry. Anotada'l 28 de setiembre de 2006. (inglés) Esto condució a una decisión pa empezar el trabayu del rediseño del llinguaxe, que se llamaría Perl 6. Pidiéronse propuestes a la comunidá Perl pa les nueves carauterístiques del llinguaxe, y recibiéronse más de 300 RFC (del inglés Request For Comments, pidimientu de comentarios).

Larry Wall tuvo los siguientes años dixiriendo los RFC y sintetizándolos nuna redolada de trabayu coherente pa Perl 6. Presentó'l so diseñu de Perl 6 nuna serie de documentos llamaos Apocalipsis, que se numberen pa correspondese colos capítulos de Programming Perl. L'actual, inacabada especificación de Perl 6, ta resumida nunos documentos de diseñu llamaos Sinopsis, que tán numberaos pa corresponder a los Apocalipsis.

Perl 6 nun tien la intención de ser compatible pa tras, anque va esistir una manera de compatibilidá.

En 2001 decidióse que Perl 6 corriera nuna máquina virtual llamada Parrot. Esto quier dicir qu'otros llinguaxes qu'usen Parrot van poder ganar accesu nativu a CPAN y va dexar dalgún ciertu nivel de desenvolvimientu cruzáu.

En 2005 Audrey Tang creó'l proyeutu pugs, una implementación de Perl 6 en Haskell. Foi y ye una plataforma de testeo del llinguaxe Perl 6 (separáu del desenvolvimientu actual de la implementación) dexando a los diseñadores esplorar. El proyeutu pugs nició una activa comunidá Perl/Haskell centrada alredor de la canal irc #perl6 en Freenode.

Un ciertu númberu de carauterístiques nel llinguaxe Perl 6 amuesen una similaridad coles de Haskell y Perl 6 foi acoyíu pola comunidá Haskell como un potencial llinguaxe de scripting.

Nel 2006, Perl 6, Parrot y pugs siguen tando baxu desenvolvimientu y un nuevu módulu pa Perl 5 llamáu v6 dexa a una parte del códigu Perl 6 correr direutamente sobre Perl 5.

 Diversión con Perl 
Como en C, les competiciones de códigu cégaru son una traza popular de la cultura Perl. L'Obfuscated Perl contest homenaxa la virtú de la flexibilidá sintáctica de Perl. El programa siguiente imprime'l testu "Just another Perl / Unix hacker", usando 32 procesos en paralelu coordinaos con pipes. La esplicación completa ta disponible en el sitiu web del autor.

@P=split//,".URRUU\c8R";@d=split//,"\nrekcah xinU / lreP rehtona tsuJ";sub p{
@p{"r$p","o$p"}=(P,P);pipe"r$p","o$p";++$p;($q*=2)+=$f=!fork;map{$P=$P[$f^ord
($p{$_})&6];$p{$_}=/ ^$P/ix?$P:close$_}keys%p}p;p;p;p;p;map{$p{$_}=~/^[P.]/&&
close$_}%p;wait until$?;map{/^r/&&<$_>}%p;$_=$d[$q];sleep rand(2)if/\S/;print

De forma similar al códigu cégaru pero con un propósitu distintu, "Poesía Perl" ye la práctica d'escribir poemes que puedan ser compilados como códigu llegal de Perl (anque xeneralmente ensin sentíu). Esta afición ye más o menos única en Perl debíu al gran númberu de pallabres normales del Inglés que'l llinguaxe utiliza. Los nuevos poemes publicar de forma regular nel sitiu Perl Monks, na seición Poesía Perl. Parte del saber de Perl ta en Black Perl, un exemplu infame de la poética de Perl.

Otru pasatiempu ye "Perl Golf". Como col deporte real, la meta ye amenorgar el númberu de golpes necesarios pa completar un oxetivu, pero equí, los "golpes" referir a los pulsaciones de tecláu en cuenta de a los percorríos nun club de golf. Propónse una xera, como "escaniar un string d'entrada y devolver el palíndromu más grande que contenga" y los participantes intenten bater a los sos oponentes escribiendo soluciones que rican cada vegada menos calteres de códigu fuente Perl.

Otra tradición ente los hacker Perl ye escribir JAPH, que ye una especie de pequeños programes cégaros qu'imprimen la frase "Just another Perl hacker,". El "canónicu" JAPH inclúi la coma a la fin, anque de cutiu omítese, y otres munches variantes que se crearon (exemplu, qu'imprime "Just Another Perl Pirate!").

Un módulu Perl interesante ye Lingua::Romana::Perligata (en CPAN). Esti módulu traduz el códigu fonte d'un script escritu en Llatín a Perl, dexando al programador escribir programes ejecutables en Llatín.

La comunidá Perl acutó l'espaciu de nomes "Acme" pa los módulos que sían risonderos o esperimentales. Dalgunos de los módulos Acme tán implementaos de maneres bien entreteníes. Dellos exemplos:
 Acme::Bleach, unu de los primeros módulos en Acme:: , dexa al códigu fonte d'un programa ser "blanquiáu" (esto ye, tolos calteres son reemplazaos pel espaciu en blancu) y siguir funcionando. Ye un exemplu d'un filtru de códigu fuente. Hai tamién un ciertu númberu d'otros filtros de fonte nel espaciu de nomes Acme.
 Acme::Hello simplifica'l procesu d'escribir un programa "Hello, World!"
 Acme::Currency dexa camudar el prefixu "$" de les variables esguilares por otru calter (por defectu usa'l euru "€")
 Acme::ProgressBar ye, dafechu fechu de camín, una horrible ya ineficiente forma d'indicar el progresu d'una xera *
Acme::VerySign satiriza'l largamente criticáu serviciu Site Finder de VeriSign
 Acme::Don't implementa l'opuestu lóxicu de la pallabra clave do —don't—, que nun executa'l bloque de códigu subordináu.

 Enllaces rellacionaos 
 Humor Perl en Wikibooks
 Lingua::Romana::Perligata - ¡Escribe Perl en Llatín!
 Un tutorial sobre Perligata
 Test de Pureza Perl

 Comunidá Perl 
La comunidá Perl ta constituyida por grupos que de la mesma conformen Perl Mongers.

N'España hai tres grupos:
 Barcelona.pm (persona de contautu: Alex Muntada)
 Madrid.pm (persona de contautu: Diego Kuperman)
 Granada.pm (persona de contautu: Juan Julián Merelo Guervós

 Ver tamién 

 La Fundación Perl (n'inglés)
 POE – la Redolada Oxeto de Perl (n'inglés)
 Perl Data Language (n'inglés)
 Plain Old Documentation – una ferramienta de documentación pa Perl (n'inglés)
 Just another Perl hacker (n'inglés)
 Obfuscated Perl contest (n'inglés)
 Perl Mongers (n'inglés)
 PerlScript (n'inglés)
 Comparison of programming languages (n'inglés)
 Programming Perl (el llibro Camellu), ISBN 0-596-00027-8 (n'inglés)
 Learning Perl, Cuarta edición (el llibru Llama), ISBN 0-596-10105-8 (n'inglés)
 Perl Cookbook, ISBN 0-596-00313-7 (n'inglés)

 Referencies 

 Enllaces esternos 

 Perl.org – El direutoriu Perl
 Perl.com – Perl n'O'Reilly Network
 Perldoc at Perl.org – documentación online de Perl
 Documentación Perl n'español Proyeutu de traducción de les páxines del manual de Perl a español.
 Desenvolvimientu de Perl 5 y Perl 6 
 Parrot máquina virtual 

Distribuciones
 The CPAN – Comprehensive Perl Archive Network, distribución fonte de Perl
 ActiveState ActivePerl – Perl para Microsoft Windows y otres plataformes
 IndigoPerl  – otra distribución de Perl pa Microsoft Windows
 Cygwin tamién distribúi Perl en Windows
 Strawberry Perl - una implementación open-source pa Windows.
 sitio web sobre Perl nel Open Directory Project

 
Categoría:Llinguaxes de programación d'altu nivel
Categoría:Llinguaxes de programación
Categoría:Software de 1987
Categoría:Wikipedia:Páxines con enllaces interllingüísticos