Perl

Da Wikipédia, a enciclopédia livre
Ir para navegação Pular para pesquisar

Perl
Perl language logo.svg
ParadigmaMulti-paradigma : funcional , imperativo , orientado a objetos ( baseado em classe ), reflexivo
Projetado porLarry Wall
DesenvolvedorLarry Wall
Apareceu pela primeira vez1 ° de fevereiro de 1988 ; 33 anos atrás [1] (1988-02-01)
Versão estável
  • 5.34.0 [2] / 20 de maio de 2021 ; 6 meses atrás (2021-05-20)
  • 5.32.1 [3] / 23 de janeiro de 2021 ; 9 meses atrás (2021-01-23)
Versão de visualização
5.35.5 [4] / 21 de outubro de 2021 ; 32 dias atrás (2021-10-21)
Disciplina de digitaçãoDinâmico
Linguagem de implementaçãoC
SOPlataforma cruzada
LicençaArtistic License 1.0 [5] [6] ou GNU General Public License [7]
Extensões de nome de arquivo.plx, .pl, .pm, .xs, .t, .pod, .cgi
Local na rede Internetwww .perl .org
Influenciado por
AWK , BASIC , C , C ++ , Lisp , sed , Unix shell [8]
Influenciado
CoffeeScript , [ carece de fontes ] Groovy , [ carece de fontes ] JavaScript , Julia , LPC , PHP , Python , Raku , Ruby , PowerShell

Perl é uma família de dois alto nível , de propósito geral , interpretadas , linguagens de programação dinâmicas . "Perl" se refere a Perl 5, mas de 2000 a 2019 também se refere à sua "linguagem irmã" redesenhada, Perl 6, antes de o nome deste último ser oficialmente alterado para Raku em outubro de 2019. [9] [10]

Embora Perl não seja oficialmente uma sigla, [11] existem vários backrônimos em uso, incluindo "Practical Extraction and Reporting Language". [12] Perl foi desenvolvido por Larry Wall em 1987 como uma linguagem de script Unix de propósito geral para tornar o processamento de relatórios mais fácil. [13] Desde então, ele passou por muitas mudanças e revisões. O Raku, que começou como um redesenho do Perl 5 em 2000, acabou evoluindo para uma linguagem separada. Ambas as linguagens continuam a ser desenvolvidas independentemente por diferentes equipes de desenvolvimento e livremente emprestam ideias umas das outras.

As linguagens Perl emprestam recursos de outras linguagens de programação, incluindo C , shell script ( sh ), AWK e sed ; [14] Eles fornecem recursos de processamento de texto sem os limites de comprimento de dados arbitrários de muitas ferramentas de linha de comando Unix contemporâneas . [15] Perl 5 ganhou grande popularidade no final de 1990 como uma linguagem de script CGI , em parte devido à sua expressão regular insuperável e habilidades de análise de strings . [16] [17] [18] [19]

Além do CGI, o Perl 5 é usado para administração de sistema , programação de rede , finanças, bioinformática e outros aplicativos, como GUIs . Ela foi apelidada de "a serra elétrica das linguagens de script do Exército Suíço" por causa de sua flexibilidade e poder, [20] e também por sua feiura. [21] Em 1998, também foi referido como a " fita adesiva que mantém a Internet unida", em referência ao seu uso onipresente como uma linguagem de cola e sua falta de elegância percebida. [22]

Perl é uma linguagem de programação altamente expressiva : o código-fonte de um determinado algoritmo pode ser curto e altamente compactável. [23] [24]

Nome

Perl foi originalmente chamado de "Pérola". Wall queria dar ao idioma um nome curto com conotações positivas. Wall descobriu a linguagem de programação PEARL existente antes do lançamento oficial do Perl e mudou a grafia do nome. [25]

Ao se referir ao idioma, o nome é maiúsculo: Perl . Ao referir-se ao próprio programa, o nome não é capitalizado ( perl ) porque a maioria dos sistemas de arquivos do tipo Unix diferenciam maiúsculas de minúsculas. Antes do lançamento da primeira edição do Perl de programação , era comum referir-se à linguagem como perl . Randal L. Schwartz , no entanto, colocou o nome do idioma em maiúscula no livro para fazê-lo se destacar melhor durante a composição. Essa distinção de caso foi posteriormente documentada como canônica. [26]

O nome é ocasionalmente expandido como um backronym : Practical Extraction and Report Language [27] e o próprio Pathologic Eclectic Rubbish Lister de Wall que está na página de manual para perl. [28]

História

As primeiras versões

Larry Wall começou a trabalhar em Perl em 1987, enquanto trabalhava como programador na Unisys , [15] e a versão 1.0 foi lançada no grupo de notícias comp.sources.unix em 1 de fevereiro de 1988. [1] A linguagem se expandiu rapidamente nos próximos poucos anos.

Perl 2, lançado em 1988, apresentava um mecanismo de expressão regular melhor. Perl 3, lançado em 1989, adicionou suporte para fluxos de dados binários . [ citação necessária ]

Originalmente, a única documentação para Perl era uma única página de manual longa . Em 1991, Programming Perl , conhecido por muitos programadores de Perl como o "Camel Book" por causa de sua capa, foi publicado e se tornou a referência de fato para a linguagem. Ao mesmo tempo, o número da versão Perl foi aumentado para 4, não para marcar uma grande mudança na linguagem, mas para identificar a versão que foi bem documentada pelo livro. [ citação necessária ]

No início Perl 5

O Perl 4 passou por uma série de lançamentos de manutenção , culminando no Perl 4.036 em 1993, quando Wall abandonou o Perl 4 para começar a trabalhar no Perl 5. O design inicial do Perl 5 continuou em 1994. A lista de correspondência perl5-porters foi estabelecida em maio de 1994 para coordenar o trabalho de portabilidade do Perl 5 para plataformas diferentes. Ele continua sendo o fórum principal para o desenvolvimento, manutenção e portabilidade do Perl 5. [29]

O Perl 5.000 foi lançado em 17 de outubro de 1994. [30] Foi uma reescrita quase completa do interpretador e adicionou muitos novos recursos à linguagem, incluindo objetos , referências , variáveis ​​lexicais (my) e módulos . É importante ressaltar que os módulos fornecem um mecanismo para estender a linguagem sem modificar o interpretador. Isso permitiu que o interpretador central se estabilizasse, ao mesmo tempo que permitia que programadores Perl comuns adicionassem novos recursos de linguagem. Perl 5 está em desenvolvimento ativo desde então. [ citação necessária ]

O Perl 5.001 foi lançado em 13 de março de 1995. O Perl 5.002 foi lançado em 29 de fevereiro de 1996 com o novo recurso de protótipos. Isso permitiu aos autores do módulo fazer sub - rotinas que se comportavam como builtins Perl . O Perl 5.003 foi lançado em 25 de junho de 1996, como um lançamento de segurança. [ citação necessária ]

Um dos eventos mais importantes na história do Perl 5 ocorreu fora da linguagem propriamente dita e foi uma consequência do suporte ao seu módulo. Em 26 de outubro de 1995, a Comprehensive Perl Archive Network (CPAN) foi estabelecida como um repositório para a linguagem Perl e módulos Perl ; em maio de 2017, transportava mais de 185.178 módulos em 35.190 distribuições, escritos por mais de 13.071 autores, e é espelhado em todo o mundo em mais de 245 locais. [31]

O Perl 5.004 foi lançado em 15 de maio de 1997 e incluiu, entre outras coisas, o pacote UNIVERSAL, dando ao Perl um objeto base do qual todas as classes eram derivadas automaticamente e a capacidade de exigir versões de módulos. Outro desenvolvimento significativo foi a inclusão do módulo CGI.pm , [32] que contribuiu para a popularidade do Perl como uma linguagem de script CGI . [33]

Perl 5.004 adicionou suporte para Microsoft Windows , Plan 9 , QNX e AmigaOS . [32]

Perl 5.005 foi lançado em 22 de julho de 1998. Este lançamento incluiu vários aprimoramentos para o mecanismo de regex , novos ganchos no back-end por meio dos B::*módulos, o qr//operador de cotação de regex, uma grande seleção de outros novos módulos principais e suporte adicionado para vários outros módulos operacionais sistemas, incluindo BeOS . [34]

2000-2020

Versão principal [35] Última atualização [36]
Old version, no longer maintained: 5,4 29/04/1999
Old version, no longer maintained: 5,5 29/03/1999
Old version, no longer maintained: 5,6 15/11/2003
Old version, no longer maintained: 5,8 14/12/2008
Old version, no longer maintained: 5,10 23/08/2009
Old version, no longer maintained: 5,12 10/11/2012
Old version, no longer maintained: 5,14 10/03/2013
Old version, no longer maintained: 5,16 11/03/2013
Old version, no longer maintained: 5,18 02/10/2014
Old version, no longer maintained: 5,20 12/09/2015
Old version, no longer maintained: 5,22 15/07/2017
Old version, no longer maintained: 5,24 14/04/2018
Old version, no longer maintained: 5,26 29/11/2018
Old version, no longer maintained: 5,28 01-06-2020
Old version, no longer maintained: 5,30 01-06-2020
Older version, yet still maintained: 5,32 23/01/2021
Current stable version: 5,34 2021-05-20
Latest preview version of a future release: 5,35 2021-05-21
Future release: 5,36 2022-05-20
Future release: 7,0 2022?
Legend:
Versão antiga Versão
mais antiga, ainda mantida
Versão estável atual
Última versão de visualização Versão
futura

O Perl 5.6 foi lançado em 22 de março de 2000. As principais mudanças incluíram suporte a 64 bits , representação de string Unicode , suporte para arquivos acima de 2 GiB e a palavra-chave "nosso". [37] [38] Ao desenvolver Perl 5.6, a decisão foi feita para mudar o esquema de versão para um mais semelhante a outros projetos de código aberto; após 5.005_63, a próxima versão tornou-se 5.5.640, com planos para versões de desenvolvimento com números ímpares e versões estáveis ​​com números pares. [ citação necessária ]

Em 2000, Wall fez uma chamada para sugestões da comunidade para uma nova versão do Perl. O processo resultou em 361 documentos RFC (solicitação de comentários) que deveriam ser usados ​​para orientar o desenvolvimento do Perl 6. Em 2001, [39] o trabalho começou nos "Apocalipses" para o Perl 6, uma série de documentos destinados a resumir a mudança pedidos e apresentar o design da próxima geração de Perl. Eles foram apresentados como um resumo das RFCs, em vez de um documento formal. Neste ponto, Perl 6 existia apenas como uma descrição de uma linguagem. [ citação necessária ]

O Perl 5.8 foi lançado em 18 de julho de 2002 e teve atualizações quase anuais desde então. Perl 5.8 melhorou o suporte a Unicode, adicionou uma nova implementação de E / S, adicionou uma nova implementação de thread, melhorou a precisão numérica e adicionou vários novos módulos. [40] Em 2013, esta versão ainda permanece a versão mais popular do Perl e é usada pelo Red Hat 5, Suse 10, Solaris 10, HP-UX 11.31 e AIX 5. [ carece de fontes ?

Em 2004, o trabalho começou nas "Sinopses" - documentos que originalmente resumiam os Apocalipses, mas que se tornaram a especificação para a linguagem Perl 6. Em fevereiro de 2005, Audrey Tang começou a trabalhar no Pugs , um intérprete Perl 6 escrito em Haskell . [41] Este foi o primeiro esforço concentrado para tornar o Perl 6 uma realidade. Este esforço foi paralisado em 2006. [42]

PONIE é um acrônimo para Perl On New Internal Engine. O Projeto PONIE existiu de 2003 a 2006 e deveria ser uma ponte entre o Perl 5 e o Perl 6. Foi um esforço para reescrever o interpretador Perl 5 para rodar no Parrot , a máquina virtual Perl 6. O objetivo era garantir o futuro das milhões de linhas de código Perl 5 em milhares de empresas ao redor do mundo. [43] O projeto PONIE terminou em 2006 e não está mais sendo desenvolvido ativamente. Algumas das melhorias feitas no interpretador Perl 5 como parte do PONIE foram incluídas nesse projeto. [44]

Em 18 de dezembro de 2007, o 20º aniversário do Perl 1.0, o Perl 5.10.0 foi lançado. O Perl 5.10.0 incluía novos recursos notáveis, que o aproximavam do Perl 6. Isso incluía uma instrução switch (chamada "given" / "when"), atualizações de expressões regulares e o operador de correspondência inteligente (~~). [45] [46] Nessa mesma época, o desenvolvimento começou para valer em outra implementação do Perl 6 conhecida como Rakudo Perl , desenvolvida em conjunto com a máquina virtual Parrot . Em novembro de 2009, Rakudo Perl teve lançamentos mensais regulares e agora é a implementação mais completa do Perl 6.

Uma grande mudança no processo de desenvolvimento do Perl 5 ocorreu com o Perl 5.11; a comunidade de desenvolvimento mudou para um ciclo de lançamento mensal de lançamentos de desenvolvimento, com uma programação anual de lançamentos estáveis. Por esse plano, as versões pontuais de correção de bugs seguirão as versões estáveis ​​a cada três meses. [ citação necessária ]

Em 12 de abril de 2010, o Perl 5.12.0 foi lançado. Melhorias principais notáveis ​​incluem nova package NAME VERSIONsintaxe, o operador Yada Yada (destinado a marcar o código de espaço reservado que ainda não foi implementado), restrições implícitas, conformidade total com Y2038 , sobrecarga de conversão de regex, suporte a DTrace e Unicode 5.2. [47] Em 21 de janeiro de 2011, Perl 5.12.3 foi lançado; ele contém módulos atualizados e algumas alterações na documentação. [48] ​​A versão 5.12.4 foi lançada em 20 de junho de 2011. A versão mais recente desse ramo, 5.12.5, foi lançada em 10 de novembro de 2012. [ carece de fontes? ]

Em 14 de maio de 2011, Perl 5.14 foi lançado com suporte JSON integrado. [49]

Em 20 de maio de 2012, o Perl 5.16 foi lançado. Novos recursos notáveis ​​incluem a capacidade de especificar uma determinada versão do Perl que se deseja emular, permitindo aos usuários atualizar sua versão do Perl, mas ainda executar scripts antigos que normalmente seriam incompatíveis. [50] Perl 5.16 também atualiza o núcleo para suportar Unicode 6.1. [50]

Em 18 de maio de 2013, o Perl 5.18 foi lançado. Novos recursos notáveis ​​incluem os novos ganchos dtrace, subs lexicais, mais CORE :: subs, revisão do hash por razões de segurança, suporte para Unicode 6.2. [51]

Em 27 de maio de 2014, o Perl 5.20 foi lançado. Novos recursos notáveis ​​incluem assinaturas de sub-rotinas, fatias de hash / nova sintaxe de fatia, desreferenciação postfix (experimental), Unicode 6.3, rand () usando gerador de número aleatório consistente. [52]

Alguns observadores atribuem o lançamento do Perl 5.10 ao início do movimento Perl Moderno. [53] Em particular, esta frase descreve um estilo de desenvolvimento que abrange o uso do CPAN, aproveita os desenvolvimentos recentes na linguagem e é rigoroso na criação de código de alta qualidade. [54] Enquanto o livro "Modern Perl" [55] pode ser o porta-estandarte mais visível desta ideia, outros grupos como a Enlightened Perl Organization [56] assumiram a causa.

No final de 2012 e 2013, vários projetos para implementações alternativas para Perl 5 começou: Perl5 em Perl6 pela equipe Rakudo Perl, [57] moe por Stevan pouco e amigos, [58] p2 [59] pela equipe Perl11 sob Reini Urban, gperl por goccy, [60] e rperl, um projeto Kickstarter liderado por Will Braswell e afiliado ao projeto Perll11. [61]

2020

Em junho de 2020, Perl 7 foi anunciado como o sucessor do Perl 5. [62] Perl 7 era para ser inicialmente baseado no Perl 5.32 com um lançamento esperado na primeira metade de 2021, e candidatos a lançamento antes. [63] Este plano foi revisado em maio de 2021, sem qualquer prazo de lançamento ou versão do Perl 5 para uso como linha de base especificada. [64] Quando o Perl 7 for lançado, o Perl 5 entrará em manutenção de longo prazo. Versões suportadas do Perl 5, no entanto, continuarão a obter segurança importante e correções de bugs. [65]

Símbolos

Camel

O símbolo Camel usado pela O'Reilly Media

Programming Perl , publicado pela O'Reilly Media , apresenta uma imagem de um camelo dromedário na capa e é comumente chamado de "Livro do Camelo". [66] Esta imagem se tornou um símbolo não oficial do Perl, bem como um emblema geral de hacker , aparecendo em camisetas e outros itens de roupa. [ citação necessária ]

O'Reilly possui a imagem como marca registrada, mas a licencia para uso não comercial , exigindo apenas um reconhecimento e um link para www.perl.com. O licenciamento para uso comercial é decidido caso a caso. [67] O'Reilly também fornece logotipos "Programming Republic of Perl" para sites não comerciais e botões "Powered by Perl" para qualquer site que use Perl. [67]

Cebola

O logotipo da cebola usado pela The Perl Foundation

A Perl Foundation possui um símbolo alternativo, uma cebola, que licencia para suas subsidiárias, Perl Mongers , PerlMonks , Perl.org e outros. [68] O símbolo é um trocadilho visual com a cebola perolada . [69]

Raptor

Logotipo alternativo do Perl 5

Sebastian Riedel, o criador de Mojolicious , criou um logotipo representando um dinossauro raptor , que está disponível sob uma licença CC-SA, versão 4.0. [70] O análogo do raptor vem de uma série de palestras proferidas por Matt S Trout começando em 2010. [71]

Visão geral

De acordo com Wall, Perl tem dois slogans. A primeira é " Há mais de uma maneira de fazer isso ", comumente conhecida como TMTOWTDI. O segundo slogan é "As coisas fáceis devem ser fáceis e as coisas difíceis devem ser possíveis". [15]

Características

A estrutura geral do Perl deriva amplamente de C. Perl é de natureza procedural , com variáveis , expressões , instruções de atribuição , blocos delimitados por chave , estruturas de controle e sub - rotinas . [72]

Perl também obtém recursos da programação do shell. Todas as variáveis ​​são marcadas com sigilos iniciais , o que permite que as variáveis ​​sejam interpoladas diretamente em strings . No entanto, ao contrário do shell, Perl usa sigilos em todos os acessos a variáveis, e ao contrário da maioria das outras linguagens de programação que usam sigilos, o sigilo não denota o tipo da variável, mas o tipo da expressão. Assim, por exemplo, enquanto um array é denotado pelo sigilo "@" (por exemplo @arrayname), um membro individual do array é denotado pelo sigilo escalar "$" (por exemplo $arrayname[3]). Perl também tem muitas funções integradas que fornecem ferramentas frequentemente usadas na programação do shell (embora muitas dessas ferramentas sejam implementadas por programas externos ao shell), como classificaçãoe ligando para os recursos do sistema operacional . [ citação necessária ]

Perl pega hashes ("matrizes associativas") de AWK e expressões regulares de sed . Isso simplifica muitas tarefas de análise, manipulação de texto e gerenciamento de dados. Compartilhado com Lisp é o retorno implícito do último valor em um bloco, e todas as instruções também são expressões que podem ser usadas em expressões maiores. [ citação necessária ]

O Perl 5 adicionou recursos que suportam estruturas de dados complexas , funções de primeira classe (ou seja, fechamentos como valores) e um modelo de programação orientado a objetos. Isso inclui referências , pacotes, envio de método baseado em classe e variáveis ​​com escopo léxico , junto com diretivas de compilador (por exemplo, o strict pragma ). Um importante recurso adicional introduzido com Perl 5 foi a capacidade de empacotar código como módulos reutilizáveis. Wall afirmou mais tarde que "Toda a intenção do sistema de módulos do Perl 5 era encorajar o crescimento da cultura Perl em vez do núcleo do Perl." [73]

Todas as versões do Perl fazem digitação automática de dados e gerenciamento automático de memória . O interpretador conhece o tipo e os requisitos de armazenamento de cada objeto de dados no programa; ele aloca e libera armazenamento para eles conforme necessário usando a contagem de referência (portanto, não pode desalocar estruturas de dados circulares sem intervenção manual). As conversões de tipo legal - por exemplo, conversões de número para string - são feitas automaticamente em tempo de execução ; conversões de tipo ilegal são erros fatais. [ citação necessária ]

Design

O design do Perl pode ser entendido como uma resposta a três grandes tendências na indústria de computadores: queda nos custos de hardware, aumento nos custos de mão de obra e melhorias na tecnologia de compiladores . Muitas linguagens de computador anteriores, como Fortran e C, objetivavam fazer uso eficiente de hardware de computador caro. Em contraste, Perl foi projetado para que os programadores de computador pudessem escrever programas mais rápida e facilmente. [ citação necessária ]

Perl tem muitos recursos que facilitam a tarefa do programador em detrimento de maiores requisitos de CPU e memória. Isso inclui gerenciamento automático de memória; tipagem dinâmica ; strings, listas e hashes; expressões regulares; introspecção ; e uma eval()função. Perl segue a teoria de "sem limites embutidos", [66] uma ideia semelhante à regra Zero One Infinity . [ citação necessária ]

Wall foi treinado como linguista, e o design do Perl é muito informado por princípios linguísticos . Os exemplos incluem a codificação Huffman (as construções comuns devem ser curtas), boa ponderação final (as informações importantes devem vir primeiro) e uma grande coleção de primitivas de linguagem . Perl favorece construções de linguagem que são concisas e naturais para humanos escreverem, mesmo quando complicam o interpretador Perl. [74]

A sintaxe do Perl reflete a ideia de que "coisas que são diferentes devem ser diferentes". [75] Por exemplo, escalares, matrizes e hashes têm diferentes sigilos principais. Os índices de array e as chaves hash usam diferentes tipos de chaves. Strings e expressões regulares têm delimitadores padrão diferentes. Esta abordagem pode ser contrastada com uma linguagem como Lisp , onde a mesma sintaxe básica, composta de expressões simbólicas simples e universais , é usada para todos os fins. [ citação necessária ]

Perl não impõe nenhum paradigma de programação em particular ( procedural , orientado a objetos , funcional ou outros) ou mesmo requer que o programador escolha entre eles. [ citação necessária ]

Há uma ampla tendência prática tanto para a linguagem Perl quanto para a comunidade e cultura que a rodeiam. O prefácio de Programming Perl começa: "Perl é uma linguagem para fazer seu trabalho." [15] Uma consequência disso é que Perl não é uma linguagem organizada. Inclui muitos recursos, tolera exceções às suas regras e emprega heurísticas para resolver ambigüidades sintáticas. Por causa da natureza tolerante do compilador, os bugs às vezes podem ser difíceis de encontrar. A documentação da função do Perl comenta sobre o comportamento variante das funções integradas em contextos de lista e escalares, dizendo: "Em geral, eles fazem o que você quer, a menos que você queira consistência." [76]

Nenhuma especificação escrita ou padrão para a linguagem Perl existe para as versões do Perl até o Perl 5, e não há planos para criar um para a versão atual do Perl. Houve apenas uma implementação do interpretador e a linguagem evoluiu junto com ele. Esse interpretador, junto com seus testes funcionais, é uma especificação de fato da linguagem. Perl 6, entretanto, começou com uma especificação, [77] e vários projetos [78] visam implementar algumas ou todas as especificações. [ citação necessária ]

Aplicações

Perl tem muitos e variados aplicativos, compostos pela disponibilidade de muitos módulos padrão e de terceiros.

Perl tem sido usado principalmente para escrever scripts CGI : grandes projetos escritos em Perl incluem cPanel , Slash , Bugzilla , RT , TWiki e Movable Type ; sites de alto tráfego que usam Perl extensivamente incluem Priceline.com , Craigslist , [79] IMDb , [80] LiveJournal , DuckDuckGo , [81] [82] Slashdot e Ticketmaster . É também um componente opcional da popular pilha de tecnologia LAMP para desenvolvimento da Web, em vez de PHP ou Python . Perl é usado extensivamente como uma linguagem de programação de sistema na distribuição Debian Linux . [83]

Perl é freqüentemente usado como uma linguagem de colagem , unindo sistemas e interfaces que não foram especificamente projetados para interoperar e para " munging de dados ", [84] ou seja, converter ou processar grandes quantidades de dados para tarefas como a criação de relatórios. Na verdade, esses pontos fortes estão intimamente ligados. A combinação torna o Perl uma linguagem popular para todos os fins para administradores de sistema , particularmente porque programas curtos, geralmente chamados de "programas de uma linha ", podem ser inseridos e executados em uma única linha de comando . [ citação necessária ]

O código Perl pode ser portável em Windows e Unix; esse código é frequentemente usado por fornecedores de software ( COTS e sob medida) para simplificar o empacotamento e a manutenção de scripts de construção e implantação de software. [ citação necessária ]

Perl / Tk e wxPerl são comumente usados ​​para adicionar interfaces gráficas de usuário a scripts Perl.

Implementação

Perl é implementado como um interpretador central, escrito em C, junto com uma grande coleção de módulos, escritos em Perl e C. Em 2010 , o interpretador tem 150.000 linhas de código C e compila para um executável de 1 MB em arquiteturas de máquina típicas. Como alternativa, o interpretador pode ser compilado em uma biblioteca de links e incorporado em outros programas. Existem quase 500 módulos na distribuição, compreendendo 200.000 linhas de Perl e 350.000 linhas adicionais de código C (grande parte do código C nos módulos consiste em tabelas de codificação de caracteres ). [ citação necessária ]

O interpretador possui uma arquitetura orientada a objetos. Todos os elementos dos linguagem Perl-escalares, arrays, hashes, coderefs, identificadores de arquivo -são representado no interpretador por estruturas C . As operações nesses structs são definidas por uma grande coleção de macros , typedefs e funções; estes constituem o Perl C API . A API Perl pode ser desconcertante para os não iniciados, mas seus pontos de entrada seguem um esquema de nomenclatura consistente , que fornece orientação para aqueles que a usam. [ citação necessária ]

A vida de um interpretador Perl se divide amplamente em uma fase de compilação e uma fase de execução. [85] Em Perl, as fases são os estágios principais no ciclo de vida do intérprete. Cada intérprete passa por cada fase apenas uma vez, e as fases seguem em uma sequência fixa. [ citação necessária ]

Muito do que acontece na fase de compilação do Perl é compilação, e muito do que acontece na fase de execução do Perl é execução, mas há exceções significativas. Perl faz uso importante de sua capacidade de executar código Perl durante a fase de compilação. O Perl também atrasa a compilação para a fase de execução. Os termos que indicam o tipo de processamento que está realmente ocorrendo a qualquer momento são tempo de compilação e tempo de execução . O Perl está em tempo de compilação na maioria dos pontos durante a fase de compilação, mas o tempo de compilação também pode ser inserido durante a fase de execução. O tempo de compilação do código em um argumento de string passado para o evalintegrado ocorre durante a fase de execução. O Perl geralmente está em tempo de execução durante a fase de compilação e passa a maior parte da fase de execução em tempo de execução. Código emBEGIN blocos são executados em tempo de execução, mas na fase de compilação.

Em tempo de compilação, o interpretador analisa o código Perl em uma árvore de sintaxe . Em tempo de execução, ele executa o programa percorrendo a árvore . O texto é analisado apenas uma vez e a árvore sintática está sujeita à otimização antes de ser executada, de modo que a execução é relativamente eficiente. Otimizações de tempo de compilação na árvore de sintaxe incluem dobramento constante e propagação de contexto, mas a otimização de olho mágico também é executada. [ citação necessária ]

Perl tem uma gramática completa de Turing porque a análise pode ser afetada pelo código de tempo de execução executado durante a fase de compilação. [86] Portanto, Perl não pode ser analisado por uma combinação direta Lex / Yacc lexer / parser . Em vez disso, o interpretador implementa seu próprio lexer, que se coordena com um analisador GNU bison modificado para resolver ambigüidades na linguagem. [ citação necessária ]

Costuma-se dizer que "Somente perl pode analisar Perl," [87] significando que apenas o interpretador Perl ( perl) pode analisar a linguagem Perl ( Perl ), mas mesmo isso não é, em geral, verdade. Como o interpretador Perl pode simular uma máquina de Turing durante sua fase de compilação, ele precisaria decidir o problema da parada para concluir a análise em todos os casos. É um resultado de longa data que o problema da parada é indecidível e, portanto, nem mesmo o perl pode sempre analisar o Perl. Perl faz a escolha incomum de dar ao usuário acesso a todo o seu poder de programação em sua própria fase de compilação. O custo em termos de pureza teórica é alto, mas os inconvenientes práticos parecem ser raros. [ citação necessária ]

Outros programas que se comprometem a analisar Perl, como analisadores de código-fonte e autoindentadores , têm que lidar não apenas com construções sintáticas ambíguas, mas também com a indecidibilidade da análise Perl no caso geral. O projeto PPI de Adam Kennedy se concentrou em analisar o código Perl como um documento (mantendo sua integridade como documento), em vez de analisar o Perl como código executável (o que nem mesmo o próprio Perl pode fazer). Foi Kennedy quem primeiro conjeturou que "analisar Perl sofre do 'problema da parada'", [88] que foi provado mais tarde. [89]

O Perl é distribuído com mais de 250.000 testes funcionais para a linguagem Perl principal e mais de 250.000 testes funcionais para os módulos principais. Eles são executados como parte do processo normal de construção e exercitam extensivamente o interpretador e seus módulos principais. Os desenvolvedores de Perl contam com os testes funcionais para garantir que as alterações no interpretador não introduzam bugs de software ; além disso, os usuários Perl que veem que o interpretador é aprovado nos testes funcionais de seu sistema podem ter um alto grau de confiança de que ele está funcionando corretamente. [ citação necessária ]

Disponibilidade

Perl é duplamente licenciado sob a Licença Artística 1.0 [5] [6] e a Licença Pública Geral GNU . [7] As distribuições estão disponíveis para a maioria dos sistemas operacionais . Ele é particularmente prevalente em Unix e Unix-like sistemas, mas foi portado para a maioria das plataformas modernas (e muitos obsoleto). Com apenas seis [ carece de fontes ] exceções relatadas, Perl pode ser compilado a partir do código-fonte em todas as plataformas compatíveis com POSIX , ou de outra forma compatíveis com Unix. [90]

Por causa das mudanças incomuns necessárias para o ambiente clássico do Mac OS , uma porta especial chamada MacPerl foi enviada de forma independente. [91]

A Comprehensive Perl Archive Network traz uma lista completa de plataformas suportadas com links para as distribuições disponíveis em cada uma. [92] CPAN também é a fonte de módulos Perl disponíveis publicamente que não fazem parte da distribuição Perl principal. [ citação necessária ]

Windows

Os usuários do Microsoft Windows normalmente instalam uma das distribuições binárias nativas do Perl para Win32, mais comumente Strawberry Perl ou ActivePerl . Compilar Perl a partir do código-fonte no Windows é possível, mas a maioria das instalações não possui o compilador C necessário e as ferramentas de construção. Isso também torna difícil instalar módulos do CPAN, particularmente aqueles que são parcialmente escritos em C. [ carece de fontes? ]

ActivePerl é uma distribuição de código fechado da ActiveState que possui lançamentos regulares que rastreiam os lançamentos principais do Perl. [93] A distribuição anteriormente incluía o gerenciador de pacotes Perl (PPM), [94] uma ferramenta popular para instalar, remover, atualizar e gerenciar o uso de módulos Perl comuns; no entanto, essa ferramenta foi descontinuada a partir do ActivePerl 5.28. [95] Também está incluído o PerlScript , um mecanismo Windows Script Host (WSH) que implementa a linguagem Perl. Visual Perl é uma ferramenta ActiveState que adiciona Perl ao pacote de desenvolvimento Visual Studio .NET. A VBScript-para-conversor Perl, bem como um compilador Perl para Windows, e conversores de awk e sed para Perl também foram produzidos por esta empresa e incluídos no CD ActiveState para Windows , que inclui todas as suas distribuições mais o IDE Komodo e todos, exceto o primeiro na sua variante Unix / Linux / Posix em 2002 e posteriormente. [96]

Strawberry Perl é uma distribuição de código aberto para Windows. Ele teve lançamentos trimestrais regulares desde janeiro de 2008, incluindo novos módulos conforme o feedback e as solicitações chegam. O Strawberry Perl visa ser capaz de instalar módulos como distribuições Perl padrão em outras plataformas, incluindo a compilação de módulos XS. [ citação necessária ]

A camada de emulação Cygwin é outra maneira de executar Perl no Windows. O Cygwin fornece um ambiente semelhante ao Unix no Windows, e tanto o Perl quanto o CPAN estão disponíveis como pacotes pré-compilados padrão no programa de instalação do Cygwin. Como o Cygwin também inclui o gcc , também é possível compilar Perl a partir do código-fonte. [ citação necessária ]

Um executável perl está incluído em vários kits de recursos do Windows no diretório com outras ferramentas de script. [ citação necessária ]

As implementações do Perl vêm com o MKS Toolkit , Interix (a base de implementações anteriores do Windows Services para Unix ) e UWIN . [ citação necessária ]

Interfaces de banco de dados

Os recursos de manipulação de texto do Perl podem ser usados ​​para gerar consultas SQL ; arrays, hashes e gerenciamento automático de memória facilitam a coleta e o processamento dos dados retornados. Por exemplo, na interface de programação de aplicativos (API) Perl DBI de Tim Bunce , os argumentos para a API podem ser o texto de consultas SQL; assim, é possível programar em vários idiomas ao mesmo tempo (por exemplo, para gerar uma página da Web usando HTML , JavaScript e SQL em um documento here ). O uso de interpolação de variáveis Perlpersonalizar programaticamente cada uma das consultas SQL, e a especificação de matrizes Perl ou hashes como as estruturas para manter programaticamente os conjuntos de dados resultantes de cada consulta SQL, permite um mecanismo de alto nível para lidar com grandes quantidades de dados para pós-processamento por um Subprograma Perl. [97] Nas primeiras versões do Perl, as interfaces de banco de dados foram criadas religando o interpretador com uma biblioteca de banco de dados do lado do cliente . Isso era tão difícil que era feito apenas para alguns dos bancos de dados mais importantes e mais amplamente usados ​​e restringia o perlexecutável resultante a usar apenas uma interface de banco de dados por vez. [98]

No Perl 5, as interfaces de banco de dados são implementadas por módulos Perl DBI. O módulo DBI (Database Interface) apresenta uma única interface independente do banco de dados para aplicativos Perl, enquanto os módulos DBD (Database Driver) lidam com os detalhes de acesso a cerca de 50 bancos de dados diferentes; existem drivers DBD para a maioria dos bancos de dados ANSI SQL . [99]

DBI fornece cache para identificadores e consultas de banco de dados, o que pode melhorar muito o desempenho em ambientes de execução de longa duração, como o mod perl , [100] ajudando sistemas de alto volume a evitar picos de carga como no efeito Slashdot . [101]

Em aplicativos Perl modernos, especialmente aqueles escritos usando estruturas da web como Catalyst , o módulo DBI é frequentemente usado indiretamente por meio de mapeadores relacionais de objetos , como DBIx :: Class , Class :: DBI [102] ou Rose :: DB :: Object [ 103] que geram consultas SQL e tratam os dados de forma transparente para o autor do aplicativo. [104]

Desempenho comparativo

The Computer Language Benchmarks Game compara o desempenho de implementações de problemas de programação típicos em várias linguagens de programação. [105] As implementações Perl enviadas normalmente funcionam em direção à extremidade superior do espectro de uso de memória e fornecem resultados de velocidade variados. O desempenho do Perl no jogo de benchmarks é típico para linguagens interpretadas. [106]

Os programas Perl grandes iniciam mais lentamente do que programas semelhantes em linguagens compiladas porque o perl tem que compilar o código-fonte toda vez que é executado. Em uma palestra na conferência YAPC :: Europe 2005 e no artigo subsequente "A Timely Start", Jean-Louis Leroy descobriu que seus programas Perl demoravam muito mais para serem executados do que o esperado porque o intérprete perl gastou um tempo significativo encontrando módulos dentro de seu grande incluir caminho. [107] Ao contrário de Java, Python e Ruby, Perl tem apenas suporte experimental para pré-compilação. [108] Portanto, os programas Perl pagam essa penalidade de overhead em cada execução. A fase de execução de programas típicos é longa o suficiente para amortizaro tempo de inicialização não é substancial, mas os benchmarks que medem tempos de execução muito curtos provavelmente serão distorcidos devido a essa sobrecarga. [109]

Uma série de ferramentas foram introduzidas para melhorar esta situação. A primeira dessas ferramentas foi o mod perl do Apache , que buscava resolver um dos motivos mais comuns pelos quais pequenos programas Perl eram invocados rapidamente: desenvolvimento da Web CGI . ActivePerl , via Microsoft ISAPI , fornece melhorias de desempenho semelhantes. [110]

Depois que o código Perl é compilado, há sobrecarga adicional durante a fase de execução que normalmente não está presente para programas escritos em linguagens compiladas como C ou C ++. Exemplos de tal sobrecarga incluem interpretação de bytecode , gerenciamento de memória de contagem de referência e verificação dinâmica de tipo. [111]

Otimizando

As rotinas mais críticas podem ser escritas em outras linguagens (como C ), que podem ser conectadas ao Perl por meio de módulos Inline simples ou do mecanismo XS mais complexo, mas flexível . [112]

Perl 5

Perl 5, a linguagem normalmente referida como "Perl", continua a ser desenvolvida ativamente. Perl 5.12.0 foi lançado em abril de 2010 com alguns novos recursos influenciados pelo design do Perl 6, [47] [113] seguido por Perl 5.14.1 (lançado em 17 de junho de 2011), Perl 5.16.1 (lançado em agosto 9, 2012. [114] ) e Perl 5.18.0 (lançado em 18 de maio de 2013). As versões de desenvolvimento do Perl 5 são lançadas mensalmente, com os principais lançamentos saindo uma vez por ano. [115]

A proporção relativa de pesquisas na Internet por "programação Perl", em comparação com pesquisas semelhantes por outras linguagens de programação, diminuiu continuamente de cerca de 10% em 2005 para cerca de 2% em 2011, para cerca de 0,7% em 2020. [116]

Raku (Perl 6)

Camelia , o logotipo do projeto Perl 6 [117]

Na Conferência Perl de 2000 , Jon Orwant defendeu uma nova iniciativa de linguagem importante. [118] Isso levou à decisão de começar a trabalhar em um redesenho da linguagem, a ser chamada de Perl 6. As propostas para novos recursos de linguagem foram solicitadas da comunidade Perl em geral, que apresentou mais de 300 RFCs . [119]

Wall passou os próximos anos digerindo as RFCs e sintetizando-as em uma estrutura coerente para Perl 6. Ele apresentou seu projeto para Perl 6 em uma série de documentos chamados "apocalipses" - numerados para corresponder aos capítulos em Perl de Programação . Em janeiro de 2011 , a especificação de desenvolvimento do Perl 6 foi encapsulada em documentos de design chamados Synopses - numerados para corresponder aos Apocalypses. [120]

O trabalho de tese de Bradley M. Kuhn , supervisionado por Wall, considerou o possível uso da máquina virtual Java como um runtime para Perl. [121] A tese de Kuhn mostrou que essa abordagem é problemática. Em 2001, foi decidido que o Perl 6 seria executado em uma máquina virtual de linguagem cruzada chamada Parrot . Isso significa que outros idiomas direcionados ao Parrot terão acesso nativo ao CPAN , permitindo algum nível de desenvolvimento entre idiomas. [ citação necessária ]

Em 2005, Audrey Tang criou o projeto Pugs , uma implementação do Perl 6 em Haskell . Isso agiu e continua agindo como uma plataforma de teste para a linguagem Perl 6 (separada do desenvolvimento da implementação real) - permitindo que os designers da linguagem explorem. O projeto Pugs gerou uma comunidade multilíngue Perl / Haskell ativa centrada no canal Libera Chat #raku IRC. Muitas influências de programação funcional foram absorvidas pela equipe de design do Perl 6. [122]

Em 2012, o desenvolvimento do Perl 6 foi centrado principalmente em dois compiladores: [123]

  1. Rakudo , uma implementação rodando na máquina virtual Parrot e na máquina virtual Java. [124]
  2. Niecza , que visa o Common Language Runtime .

Em 2013, foi anunciado MoarVM (“Metamodel On A Runtime”), uma máquina virtual baseada na linguagem C projetada principalmente para Rakudo. [125]

Em outubro de 2019, Perl 6 foi renomeado para Raku. [126]

A partir de 2017, apenas a implementação Rakudo e MoarVM estão em desenvolvimento ativo, e outras máquinas virtuais, como Java Virtual Machine e JavaScript , são suportadas. [127]

Perl 7

O Perl 7 foi anunciado em 24 de junho de 2020 na "The Perl Conference in the Cloud" como o sucessor do Perl 5. [128] [129] Baseado no Perl 5.32, o Perl 7 foi projetado para ser compatível com as versões anteriores do código Perl 5 moderno; O código Perl 5, sem cabeçalho padrão (pragma), precisa ser adicionado use compat::perl5;para permanecer compatível, mas o código moderno pode eliminar parte do padrão.

Comunidade Perl

A cultura e a comunidade de Perl se desenvolveram junto com a própria língua. A Usenet foi o primeiro local público em que o Perl foi introduzido, mas ao longo de sua evolução, a comunidade de Perl foi moldada pelo crescimento da expansão dos serviços baseados na Internet, incluindo a introdução da World Wide Web. A comunidade que cerca Perl foi, de fato, o assunto da primeira palestra de Wall sobre o "Estado da Cebola". [130]

State of the Onion

State of the Onion é o nome dado aos resumos anuais em estilo keynote sobre o progresso de Perl e sua comunidade. Eles são caracterizados por seu humor característico, empregando referências à cultura de Perl, a cultura hacker mais ampla, a formação linguística de Wall, às vezes sua vida familiar e, ocasionalmente, até sua formação cristã. [131]

Cada palestra é dada pela primeira vez em várias conferências Perl e, eventualmente, também é publicada online.

Passatempos Perl

JAPHs
Em e-mails, Usenet e postagens de quadro de mensagens, os programas " Just another Perl hacker " (JAPH) são uma tendência comum, originados por Randal L. Schwartz , um dos primeiros treinadores profissionais de Perl. [132] No jargão da cultura Perl, os programadores Perl são conhecidos como hackers Perl, e disso deriva a prática de escrever programas curtos para imprimir a frase "Just another Perl hacker". No espírito do conceito original, esses programas são moderadamente ofuscados e curtos o suficiente para caber na assinatura de um e-mail ou mensagem da Usenet. O JAPH "canônico" desenvolvido por Schwartz inclui a vírgula no final, embora isso seja frequentemente omitido. [133]
Golfe perl
O "golfe" em Perl é o passatempo de reduzir o número de caracteres ("tacadas" principais) usados ​​em um programa Perl ao mínimo, da mesma forma que os jogadores de golfe procuram dar o mínimo de tacadas possível em uma rodada. O primeiro uso da frase [134] enfatizou a diferença entre código pedestre destinado a ensinar um recém-chegado e hacks concisos para divertir programadores Perl experientes, um exemplo deste último sendo JAPHs que já eram usados ​​em assinaturas em postagens da Usenet e em outros lugares. Acrobacias semelhantes eram um passatempo sem nome na linguagem APL nas décadas anteriores. O uso de Perl para escrever um programa que executava criptografia RSA despertou um interesse amplo e prático neste passatempo. [135]Nos anos subsequentes, o termo " código de golfe " foi aplicado ao passatempo em outras línguas. [136] Um Perl Golf Apocalypse foi realizado na Perl Conference 4.0 em Monterey, Califórnia, em julho de 2000.
Ofuscação
Assim como no C, as competições de código ofuscado eram um passatempo bem conhecido no final dos anos 1990. O Concurso Perl Ofuscado foi uma competição realizada pelo The Perl Journal de 1996 a 2000 que transformou a flexibilidade sintática do Perl em uma grande virtude. Os prêmios foram dados para categorias como "mais poderoso" - programas que fazem uso eficiente do espaço - e "melhor assinatura de quatro linhas" para programas que se encaixam em quatro linhas de 76 caracteres no estilo de um bloco de assinatura Usenet . [137]
Poesia
Poesia Perl é a prática de escrever poemas que podem ser compilados como código Perl legal, por exemplo, a peça conhecida como Black Perl . A poesia Perl é possível devido ao grande número de palavras em inglês que são usadas na linguagem Perl. Novos poemas são regularmente enviados à comunidade em PerlMonks . [138]

Perl no IRC

Existem vários canais de IRC que oferecem suporte para o idioma e alguns módulos.

Rede IRC Canais
irc.libera.chat #perl #raku
irc.perl.org #moose #poe #catalyst # dbix-class # perl-help #distzilla #epo #corehackers #sdl # win32 #toolchain #padre #dancer
irc.slashnet.org #perlmonks
irc.oftc.net #perl # debian-perl (empacotando módulos Perl para Debian)
irc.efnet.net #perlhelp
irc.rizon.net #perl

CPAN Acme

Existem também muitos exemplos de código escrito exclusivamente para entretenimento no CPAN . Lingua::Romana::Perligata, por exemplo, permite escrever programas em latim . [139] Após a execução de tal programa, o módulo traduz seu código-fonte em Perl normal e o executa. [ citação necessária ]

A comunidade Perl reservou o namespace " Acme " para módulos divertidos por natureza (mas seu escopo foi ampliado para incluir código exploratório ou experimental ou qualquer outro módulo que não deva ser usado em produção). Alguns dos módulos da Acme são implementados deliberadamente de maneiras divertidas. Isso inclui Acme::Bleach, um dos primeiros módulos no Acme::namespace, [140] que permite que o código-fonte do programa seja "embranquecido" (ou seja, todos os caracteres substituídos por espaços em branco) e ainda funcione. [ citação necessária ]

Código de exemplo

Em versões mais antigas do Perl, seria possível escrever o programa Hello World como:

print  "Olá, Mundo! \ n" ;

Aqui está um programa Perl mais complexo, que faz a contagem regressiva de segundos a partir de um determinado valor inicial:

#! / usr / bin / perl 
use  strict ; 
use  avisos ;

meu  (  $ restantes ,  $ total  );

$ restantes  =  $ total  =  deslocamento ( @ARGV );

STDOUT -> autoflush ( 1 );

while  (  $ restantes  )  { 
    printf  (  "Restantes% s /% s \ r" ,  $ restantes - ,  $ total  ); 
    dormir  1 ; 
}

imprimir  "\ n" ;

O interpretador perl também pode ser usado para scripts únicos na linha de comando. O exemplo a seguir (conforme invocado de um shell compatível com sh, como Bash) traduz a string "Bob" em todos os arquivos que terminam com .txt no diretório atual para "Robert":

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

Críticas

Perl tem sido referido como " ruído de linha " e uma linguagem somente para escrita por seus críticos. A primeira dessas menções foi na primeira edição do livro Learning Perl , um livro tutorial Perl 4 escrito por Randal L. Schwartz , [141] no primeiro capítulo do qual ele afirma: "Sim, às vezes o Perl parece ruído de linha para o não iniciados, mas para o programador Perl experiente, parece um ruído de linha com soma de verificação com uma missão na vida. " [142] Ele também afirmou que a acusação de que Perl é uma linguagem somente para escrita poderia ser evitada codificando com "o devido cuidado". [142] O documento de visão geral do Perl perlintro afirma que os nomes de "mágica" embutidaescalarvariáveis "parecem pontuação ou ruído de linha". [143] No entanto, o módulo de inglês oferece alternativas longas e curtas em inglês. O documento perlstyle afirma que o ruído de linha em expressões regulares pode ser mitigado usando o /xmodificador para adicionar espaços em branco. [144]

De acordo com o Perl 6 FAQ , Perl 6 foi projetado para mitigar "os suspeitos usuais" que eliciam a alegação de "ruído de linha" dos críticos do Perl 5, incluindo a remoção da "maioria das variáveis ​​de pontuação" e a higienização da sintaxe regex . [145] O Perl 6 FAQ também afirma que o que às vezes é referido como ruído de linha do Perl é "a sintaxe real da linguagem", assim como gerúndios e preposições fazem parte da língua inglesa . [145] Em uma postagem no blog de dezembro de 2012, apesar de afirmar que "Rakudo Perl 6 falhou e continuará falhando a menos que receba supervisão de um adulto", cromáticoafirmou que o design do Perl 6 tem uma "gramática bem definida", bem como um "sistema de tipos melhorado, um sistema de objeto unificado com um metamodelo inteligente, metaoperadores e um sistema mais claro de contexto que fornece sutilezas como preguiça generalizada" . [146] Ele também afirmou que "Perl 6 tem uma coerência e uma consistência que Perl 5 não tem." [146]

Veja também

Referências

  1. ^ a b "v13i001: Perl, um" substituto "para awk e sed, Parte 01/10" . arquivos comp.sources.unix . Recuperado em 11 de agosto de 2021 .
  2. ^ "Perl 5.34.0 já está disponível!" . www.nntp.perl.org . Recuperado em 21 de maio de 2021 .
  3. ^ "Perl 5.32.1 já está disponível!" . www.nntp.perl.org. Arquivado do original em 24 de janeiro de 2021 . Recuperado em 24 de janeiro de 2021 .
  4. ^ "Perl 5.35.5 já está disponível!" . www.nntp.perl.org . Recuperado em 23 de outubro de 2021 .
  5. ^ a b "A" Licença Artística "- dev.perl.org" . dev.perl.org . Arquivado do original em 24 de julho de 2018 . Recuperado em 24 de junho de 2016 .
  6. ^ a b Artistic Archived em 25 de julho de 2018, na Wayback Machine - arquivo no repositório Perl 5 git
  7. ^ a b "Licenciamento Perl" . dev.perl.org. Arquivado do original em 22 de janeiro de 2011 . Recuperado em 8 de janeiro de 2011 .
  8. ^ Larry Wall (12 de dezembro de 2007). "Programar é difícil, vamos criar scripts ..." Arquivado do original em 28 de julho de 2017 . Recuperado em 14 de abril de 2019 . Todos os designers de linguagem têm suas idiossincrasias ocasionais. Eu sou melhor nisso do que a maioria.
  9. ^ "Sobre Perl" . perl.org. Arquivado do original em 6 de novembro de 2015 . Recuperado em 20 de abril de 2013 . "Perl" é uma família de linguagens, "Perl 6" faz parte da família, mas é uma linguagem separada que tem sua própria equipe de desenvolvimento. Sua existência não tem impacto significativo no desenvolvimento contínuo do "Perl 5".
  10. ^ "Caminho para Raku" . GitHub. Arquivado do original em 12 de novembro de 2020 . Recuperado em 14 de janeiro de 2021 . Este documento descreve as etapas a serem tomadas para efetuar uma renomeação de Perl 6 para Raku
  11. ^ Lapworth, Leo. "Perguntas gerais sobre Perl" . Perl FAQ . Perl.org. Arquivado do original em 22 de junho de 2013 . Recuperado em 24 de fevereiro de 2012 .
  12. ^ "perl (1): Linguagem Prática de Extração / Relatório - Página man do Linux" . Linux.die.net. Arquivado do original em 22 de junho de 2013 . Recuperado em 23 de julho de 2013 .
  13. ^ Sheppard, Doug (16 de outubro de 2000). "Introdução ao Perl para iniciantes" . dev.perl.org. Arquivado do original em 5 de junho de 2011 . Recuperado em 8 de janeiro de 2011 .
  14. ^ Ashton, Elaine (1999). "A linha do tempo de Perl e sua cultura (v3.0_0505)" . Arquivado do original em 11 de janeiro de 2013 . Recuperado em 12 de março de 2004 .
  15. ^ a b c d Parede, Larry ; Christiansen, Tom; Orwant, Jon (julho de 2000). Perl de programação, terceira edição . O'Reilly Media . ISBN 978-0-596-00027-1.
  16. ^ "Avaliações de linguagem" . Arquivado do original em 10 de março de 2015 . Recuperado em 30 de janeiro de 2015 . O ponto mais forte do Perl são seus recursos integrados extremamente poderosos para processamento direcionado por padrões de formatos de dados textuais orientados por linha; é insuperável nisso.
  17. ^ "Você usou Perl para escrever O QUÊ ?!" . 24 de janeiro de 2008. Arquivado do original em 4 de fevereiro de 2015 . Recuperado em 4 de fevereiro de 2015 . perl sempre foi a linguagem ideal para qualquer tarefa que envolva entrada de correspondência de padrões
  18. ^ "A importância do Perl" . Arquivado do original em 2 de fevereiro de 2015 . Recuperado em 4 de fevereiro de 2015 . A capacidade incomparável do Perl de processar texto ...
  19. ^ Smith, Roderick W. (21 de junho de 2002). Rede Linux avançada . Addison-Wesley Professional. p. 594 . ISBN 978-0-201-77423-8.
  20. ^ Sheppard, Doug (16 de outubro de 2000). "Introdução ao Perl para iniciantes" . O'Reilly Media . Arquivado do original em 4 de junho de 2008 . Recuperado em 27 de julho de 2008 .
  21. ^ Raymond, Eric (23 de dezembro de 2003). "Motosserra do Exército Suíço" . O arquivo jargão . Arquivado do original em 14 de agosto de 2018 . Recuperado em 29 de novembro de 2014 .
  22. ^ Leonard, Andrew. "A alegria de Perl" . Salon.com . Arquivado do original em 6 de julho de 2012 . Recuperado em 5 de junho de 2012 .
  23. ^ "Como os programas são medidos | Jogo de benchmarks da linguagem de computador" . benchmarksgame-team.pages.debian.net . Arquivado do original em 12 de julho de 2020 . Recuperado em 5 de outubro de 2020 .
  24. ^ "RSA em 3 linhas de perl - Everything2.com" . everything2.com . Arquivado do original em 8 de outubro de 2020 . Recuperado em 5 de outubro de 2020 .
  25. ^ Richardson, Marjorie (1º de maio de 1999). "Larry Wall, o Guru de Perl" . Linux Journal . Arquivado do original em 22 de junho de 2013 . Recuperado em 3 de janeiro de 2011 .
  26. ^ "perlfaq1: Qual é a diferença entre" perl "e" Perl "?" . perldoc.perl.org - Documentação do Perl 5 versão 12.2 . Arquivado do original em 12 de maio de 2013 . Retirado em 4 de junho de 2007 .
  27. ^ Schwartz, Randal ; foy, brian ; Phoenix, Tom (16 de junho de 2011). Learning Perl . O'Reilly Media, Inc. p. 4 . ISBN 978-1449313142. Perl é algumas vezes chamado de "Linguagem Prática de Extração e Relatório", embora também tenha sido chamado de "Lister de Lixo Patologicamente Eclético", entre outras expansões. Na verdade, é um backronym, não um acrônimo, já que Larry Wall, o criador do Perl, veio com o nome primeiro e a expansão depois. É por isso que "Perl" não está em maiúsculas. Não faz sentido argumentar que a expansão é correta: Larry endossa ambas.
  28. ^ Parede, Larry . "perl - O intérprete da linguagem Perl" . Documentação do Perl 5 versão 12.2 . Arquivado do original em 22 de junho de 2013 . Recuperado em 26 de janeiro de 2011 .
  29. ^ "arquivo perl.perl5.porters" . perl.org. Arquivado do original em 1º de maio de 2011 . Recuperado em 13 de janeiro de 2011 .
  30. ^ "perlhist - os registros históricos do Perl" . Documentação do Perl 5 versão 12.2 . perldoc.perl.org. Arquivado do original em 13 de janeiro de 2011 . Recuperado em 21 de janeiro de 2011 .
  31. ^ "CPAN" . CPAN . Arquivado do original em 3 de outubro de 2019 . Recuperado em 8 de maio de 2017 .
  32. ^ a b "perl5004delta - o que há de novo em perl5.004" . Documentação do Perl 5 versão 12.2 . perldoc.perl.org. Arquivado do original em 27 de fevereiro de 2011 . Recuperado em 8 de janeiro de 2011 .
  33. ^ Patwardhan, Nathan; Siever, Ellen; Spainhour, Stephen (2002). Perl em poucas palavras, segunda edição . O'Reilly Media . ISBN 978-0-596-00241-1.
  34. ^ "perl5005delta - o que há de novo em perl5.005" . Documentação do Perl 5 versão 12.2 . perldoc.perl.org. Arquivado do original em 3 de fevereiro de 2011 . Recuperado em 21 de janeiro de 2011 .
  35. ^ "perlhist - os registros históricos do Perl" . www.cpan.org. Arquivado do original em 16 de setembro de 2020 . Recuperado em 2 de junho de 2020 .
  36. ^ "Fonte Perl" . www.cpan.org. Arquivado do original em 1º de junho de 2017 . Recuperado em 2 de junho de 2020 .
  37. ^ "perl56delta - o que há de novo no perl v5.6.0" . Documentação do Perl 5 versão 12.2 . perldoc.perl.org. Arquivado do original em 2 de fevereiro de 2011 . Recuperado em 21 de janeiro de 2011 .
  38. ^ "perl56delta - o que há de novo no perl v5.6.x" . Documentação do Perl 5 versão 12.2 . perldoc.perl.org. Arquivado do original em 18 de novembro de 2010 . Recuperado em 21 de janeiro de 2011 .
  39. ^ Parede, Larry. "Apocalipse 1: O Feio, o Mau e o Bom" . Arquivado do original em 23 de novembro de 2010 . Recuperado em 8 de janeiro de 2011 .
  40. ^ "perl58delta - o que há de novo no perl v5.8.0" . Documentação do Perl 5 versão 12.2 . perldoc.perl.org. Arquivado do original em 21 de novembro de 2010 . Recuperado em 21 de janeiro de 2011 .
  41. ^ "Um Plano para Pugs" . O'Reilly Media . 3 de março de 2005. Arquivado do original em 8 de setembro de 2012 . Recuperado em 27 de janeiro de 2011 .
  42. ^ Tang, Audrey (21 de abril de 2010). "Re: Como implementar Perl 6 em dez anos" . PerlMonks . Arquivado do original em 11 de maio de 2011 . Recuperado em 3 de janeiro de 2011 .
  43. ^ Geoff Broadwell (8 de agosto de 2005), OSCON 4.4: Inside Ponie, the Bridge from Perl 5 a Perl 6 , O'Reilly ONLamp Blog, arquivado do original em 14 de março de 2012 , recuperado em 27 de junho de 2016
  44. ^ Jesse Vincent (23 de agosto de 2006), Ponie foi colocado no pasto , The Perl Foundation, arquivado do original em 27 de junho de 2009 , recuperado em 15 de janeiro de 2019
  45. ^ "perl5100delta - o que há de novo no perl 5.10.0" . Documentação do Perl 5 versão 12.2 . perldoc.perl.org. Arquivado do original em 21 de dezembro de 2010 . Recuperado em 8 de janeiro de 2011 .
  46. ^ "perlsyn - sintaxe Perl" . Documentação do Perl 5 versão 12.2 . perldoc.perl.org. Arquivado do original em 26 de agosto de 2013 . Recuperado em 21 de janeiro de 2011 .
  47. ^ a b "perl5120delta - o que há de novo no perl v5.12.0" . Documentação do Perl 5 versão 12.2 . perldoc.perl.org. Arquivado do original em 4 de janeiro de 2011 . Recuperado em 8 de janeiro de 2011 .
  48. ^ "perldelta - o que há de novo no perl v5.12.3" . Documentação do Perl 5 versão 12.2 . perldoc.perl.org. Arquivado do original em 8 de junho de 2011 . Recuperado em 8 de janeiro de 2011 .
  49. ^ "perl5140delta - o que há de novo para perl v5.14.0 - metacpan.org" . metacpan.org . Arquivado do original em 25 de julho de 2018 . Recuperado em 22 de julho de 2017 .
  50. ^ a b "perldelta - o que há de novo no perl v5.16.0" . Documentação do Perl 5 versão 16.0 . metacpan.org. Arquivado do original em 28 de julho de 2020 . Recuperado em 21 de maio de 2012 .
  51. ^ "perl5180delta - o que há de novo no perl v5.18.0 - linguagem de programação Perl" . Documentação do Perl 5 versão 18.0 . metacpan.org. Arquivado do original em 29 de outubro de 2013 . Recuperado em 27 de outubro de 2013 .
  52. ^ "perl5200delta - o que há de novo no perl v5.20.0 - linguagem de programação Perl" . Documentação do Perl 5 versão 20.0 . metacpan.org. Arquivado do original em 27 de maio de 2014 . Recuperado em 27 de maio de 2014 .
  53. ^ Milestones in the Perl Renaissance - Modern Perl Programming Archived 27 de outubro de 2012, na Wayback Machine . Modernperlbooks.com. Obtido em 2013-07-17.
  54. ^ Prefácio (Perl moderno 2011-2012) Arquivado em 28 de setembro de 2012, na máquina de Wayback . Modernperlbooks.com. Obtido em 2013-07-17.
  55. ^ Modern Perl 2011-2012 edition by chromatic | Onyx Neon Press Arquivado em 22 de dezembro de 2011, na Wayback Machine . Onyxneon.com. Obtido em 2013-07-17.
  56. ^ "Perl Iluminado" . Perl Iluminado . Arquivado do original em 5 de fevereiro de 2014 . Recuperado em 28 de setembro de 2012 .
  57. ^ "YAPC :: NA 2013 - 3-5 junho, Austin, Texas" . Yapcna.org. 4 de junho de 2013. Arquivado do original em 22 de junho de 2013 . Recuperado em 11 de abril de 2014 .
  58. ^ Little, Stevan (8 de fevereiro de 2013). "O que é Moe (um esclarecimento) | Stevan Little" . Blogs.perl.org. Arquivado do original em 19 de dezembro de 2013 . Recuperado em 11 de abril de 2014 .
  59. ^ "p2 na poção" . Perl11.org. 7 de fevereiro de 2004. Arquivado do original em 24 de setembro de 2013 . Recuperado em 11 de abril de 2014 .
  60. ^ "goccy / gperl 路 GitHub" . GitHub.com. Arquivado do original em 23 de fevereiro de 2015 . Recuperado em 11 de abril de 2014 .
  61. ^ "rperl" . RPerl.org. Arquivado do original em 18 de outubro de 2014 . Recuperado em 11 de agosto de 2014 .
  62. ^ "Perl 7 anunciado na Perl Conference in the Cloud" . perlfoundation.org. 24 de junho de 2020. Arquivado do original em 26 de junho de 2020 . Recuperado em 24 de junho de 2020 .
  63. ^ "Anunciando Perl 7" . perl.com. 24 de junho de 2020. Arquivado do original em 24 de junho de 2020 . Recuperado em 24 de junho de 2020 .
  64. ^ Nicholas Clark (9 de maio de 2021). "Reunião do Conselho Diretor # 019 2021-05-06" . www.nntp.perl.org . Arquivado do original em 18 de maio de 2021 . Recuperado em 17 de maio de 2021 . O plano continua sendo que haverá um aumento no Perl 7, mas não imediatamente após o lançamento do 5.34.0. ... Não achamos que podemos entregar o [Perl 7] em 12 meses. 
  65. ^ Preparando-se para Perl 7d . leanpub.com. 24 de junho de 2020. Arquivado do original em 25 de junho de 2020 . Recuperado em 24 de junho de 2020 .
  66. ^ a b Schwartz, Randal L ; Phoenix, Tom; Foy, Brian (6 de dezembro de 2007). Aprendendo Perl, Terceira Edição . ISBN 978-0-596-00132-2.
  67. ^ a b "Informações sobre o uso e a marca registrada do camelo Perl" . O'Reilly Media . Arquivado do original em 25 de abril de 2018 . Recuperado em 9 de janeiro de 2011 .
  68. ^ "Marca registrada Perl" . A Fundação Perl . Arquivado do original em 3 de maio de 2011 . Recuperado em 9 de janeiro de 2011 .
  69. ^ Gillmore, Dan (25 de outubro de 1998). "República de Perl" . Chicago Tribune . Arquivado do original em 30 de abril de 2011 . Recuperado em 10 de janeiro de 2011 .
  70. ^ Riedel, Sebastian (18 de janeiro de 2012). "Perl 5 Raptor" . Sebastian Riedel . Arquivado do original em 11 de junho de 2018 . Recuperado em 12 de novembro de 2017 .
  71. ^ Truta, Matt (16 de junho de 2005). “Estado do Velociraptor - Fase dois” . Shadowcat Systems Limited . Arquivado do original em 13 de novembro de 2017 . Recuperado em 12 de novembro de 2017 .
  72. ^ Nagpal, DP (2010). Tecnologia de Web Design . Índia: S. Chand. p. 700. ISBN 978-8121927635.
  73. ^ "título desconhecido". 10 de maio de 1997. Usenet: [email protected] . [ link morto ]
  74. ^ Parede, Larry. "perl - O intérprete da linguagem Perl 5 - Navegador Perldoc" . perldoc.perl.org . Recuperado em 24 de junho de 2021 .
  75. ^ Wall, Larry (1 ° de março de 1997). "Portanto és?" . Linux Journal . Arquivado do original em 9 de dezembro de 2010 . Recuperado em 13 de março de 2011 .
  76. ^ "perlfunc - funções integradas do Perl" . Documentação do Perl 5 versão 12.2 . perldoc.perl.org. Arquivado do original em 6 de janeiro de 2011 . Recuperado em 10 de janeiro de 2011 .
  77. ^ "Especificação do Perl 6" . O Projeto Perl 6. Arquivado do original em 2 de dezembro de 2009 . Recuperado em 27 de janeiro de 2011 .
  78. ^ "Compiladores Perl 6" . O Projeto Perl 6. Arquivado do original em 2 de dezembro de 2009 . Recuperado em 27 de janeiro de 2011 .
  79. ^ Gilmore, WJ (2010). Iniciando PHP e MySQL: do iniciante ao profissional, quarta edição . Apress. p. 484 . ISBN 978-1-4302-3114-1.
  80. ^ "Helpdesk IMDb: Qual software / hardware você está usando para executar o site?" . Banco de dados de filmes da Internet . Arquivado do original em 9 de março de 2017 . Recuperado em 12 de fevereiro de 2011 .
  81. ^ DuckDuckGo lida com uma grande quantidade de consultas de pesquisa em 4,5 milhões de consultas por dia. https://duckduckgo.com/traffic.html Arquivado em 15 de fevereiro de 2012, nosArquivos da Webda Biblioteca do Congresso
  82. ^ DuckDuckGo usa Perl https://web.archive.org/web/20101231135106/http://www.gabrielweinberg.com/blog/2009/03/duck-duck-go-architecture.html
  83. ^ "FAQ do Perl" . Arquivado do original em 6 de agosto de 2019 . Recuperado em 6 de agosto de 2019 . Perl é usado extensivamente no Debian. Não apenas algumas funções centrais são escritas em Perl, mas existem mais de 700 pacotes na unstable que têm perl em seus nomes (março de 2004).
  84. ^ "Perl Books - Book: Data Munging with Perl" . Perl.org . Arquivado do original em 7 de setembro de 2011 . Recuperado em 30 de dezembro de 2010 .
  85. ^ Uma descrição do interpretador Perl 5 pode ser encontrada em Programming Perl , 3ª Ed., Capítulo 18. Veja particularmente a página 467, que distingue cuidadosamente a fase de execução e a fase de compilação do tempo de execução e tempo de compilação . Perl "tempo" e "fase" são freqüentemente confundidos.
  86. ^ Schwartz, Randal . "On Parsing Perl" . Arquivado do original em 27 de setembro de 2007 . Retirado em 3 de janeiro de 2007 .
  87. ^ "The Perl Journal # 19 / 9.26" (PDF) . O'Reilly Media . Recuperado em 4 de fevereiro de 2011 .
  88. ^ Kennedy, Adam (2006). "PPI - Analisar, Analisar e Manipular Perl (sem perl)" . CPAN . Arquivado do original em 3 de setembro de 2013 . Recuperado em 16 de setembro de 2013 .
  89. ^ "Teorema do arroz". The Perl Review . 4 (3): 23–29. Verão de 2008.e "Perl é indecidível". The Perl Review . 5 : 7-11. Outono de 2008., disponível online em Kegler, Jeffrey. "Perl e indecidibilidade" . Arquivado do original em 17 de agosto de 2009 . Recuperado em 4 de janeiro de 2009 .
  90. ^ Hietaniemi, Jarkko (1998). "Portas Perl (distribuições binárias)" . CPAN.org. Arquivado do original em 18 de abril de 2006 . Recuperado em 16 de abril de 2006 .
  91. ^ "As páginas MacPerl" . Freeware do Prime Time. 1997. Arquivado do original em 18 de janeiro de 2006 . Recuperado em 18 de janeiro de 2006 .
  92. ^ "Portas Perl (distribuições binárias)" . CPAN . Arquivado do original em 18 de abril de 2006 . Recuperado em 27 de janeiro de 2011 .
  93. ^ "ActivePerl é Perl para Windows, Mac, Linux, AIX, HP-UX e Solaris" . Software ActiveState . Arquivado do original em 31 de março de 2016 . Recuperado em 9 de janeiro de 2011 .
  94. ^ "Usando PPM" . Software ActiveState . Arquivado do original em 27 de agosto de 2010 . Recuperado em 9 de janeiro de 2011 .
  95. ^ "Goodbye PPM, Hello State Tool" . activestate.com . 23 de julho de 2019. Arquivado do original em 28 de julho de 2020 . Recuperado em 16 de abril de 2020 .
  96. ^ readme.txt
  97. ^ Descartes, Jacaré; Bunce, Tim (2000). Programando o DBI Perl: [programação de banco de dados com Perl] (1 ed.). Pequim [ua]: O'Reilly. ISBN 978-1-56592-699-8.
  98. ^ "Programação Perl - Princípios de Linguagens de Programação" . sites.google.com . Recuperado em 18 de maio de 2021 .
  99. ^ Bunce, Tim; Descartes, Alligator (4 de fevereiro de 2000). Programando o Perl DBI: Programação de banco de dados com Perl . "O'Reilly Media, Inc.". ISBN 978-1-4493-1536-8.
  100. ^ Bekman, Stas. "Trabalho eficiente com bancos de dados em mod_perl" . Arquivado do original em 22 de agosto de 2007 . Retirado em 1 de setembro de 2007 .
  101. ^ Pachev, Sasha (10 de abril de 2007). Compreendendo a parte interna do MySQL: descobrindo e aprimorando um ótimo banco de dados . "O'Reilly Media, Inc.". ISBN 978-0-596-55280-0.
  102. ^ "Class :: DBI - Simple Database Abstraction - metacpan.org" . metacpan.org . Arquivado do original em 6 de agosto de 2020 . Recuperado em 8 de abril de 2020 .
  103. ^ "Rose :: DB :: Object - Mapeador objeto-relacional (ORM) extensível de alto desempenho. - metacpan.org" . metacpan.org . Arquivado do original em 6 de agosto de 2020 . Recuperado em 8 de abril de 2020 .
  104. ^ "Referência do desenvolvedor de consulta do T sql" . pdfpremiumfree.com . Recuperado em 18 de maio de 2021 .
  105. ^ "Alioth: The Computer Language Benchmarks Game: Project Info" . Alioth . Arquivado do original em 25 de março de 2013 . Recuperado em 13 de janeiro de 2011 .
  106. ^ "Quais programas são mais rápidos?" . Jogo de benchmarks de linguagem de computador . Alioth . Arquivado do original em 17 de maio de 2013 . Recuperado em 13 de janeiro de 2011 .
  107. ^ Leroy, Jean-Louis (1º de dezembro de 2005). "Um início oportuno" . O'Reilly. Arquivado do original em 13 de junho de 2006 . Recuperado em 22 de maio de 2006 .
  108. ^ Beattie, Malcolm & Enache Adrian (2003). "Backend de bytecode do compilador B :: Bytecode Perl" . CPAN . Arquivado do original em 30 de março de 2021 . Recuperado em 16 de setembro de 2013 .
  109. ^ Schwartz, Randal; foy, brian; Phoenix, Tom (23 de junho de 2011). Learning Perl . "O'Reilly Media, Inc.". ISBN 978-1-4493-0358-7.
  110. ^ Stein, Lincoln; MacEachern, Doug (1999). Escrevendo Módulos Apache com Perl e C: A API Apache e Mod_perl . "O'Reilly Media, Inc.". ISBN 978-1-56592-567-0.
  111. ^ Bekman, Stas; Cholet, Eric (2003). Mod_perl prático . "O'Reilly Media, Inc.". ISBN 978-0-596-00227-5.
  112. ^ Ingerson, Brian. "Inline - metacpan.org" . CPAN . Arquivado do original em 13 de junho de 2013 . Recuperado em 26 de janeiro de 2011 .
  113. ^ "Perl 5.12.0 lançado - Atualização" . Heise Media UK. 13 de abril de 2010. Arquivado do original em 19 de abril de 2010 . Recuperado em 8 de janeiro de 2011 .
  114. ^ "Perl 5.16.1 lançado!" . 9 de agosto de 2012. Arquivado do original em 2 de dezembro de 2012 . Recuperado em 26 de agosto de 2012 .
  115. ^ "O trem de lançamento do Perl imparável?" . LWN.net. 29 de fevereiro de 2012. Arquivado do original em 22 de agosto de 2016 . Recuperado em 28 de março de 2012 .
  116. ^ Índice de software TIOBE (2020). "TIOBE Programming Community Index Perl" . Arquivado do original em 25 de fevereiro de 2018 . Recuperado em 6 de fevereiro de 2020 .
  117. ^ "Perl 6" . O Projeto Perl 6. Arquivado do original em 21 de fevereiro de 2011 . Recuperado em 27 de fevereiro de 2011 .
  118. ^ Torkington, Nathan. "Transcrição da palestra de Larry" . nntp.perl.org. Arquivado do original em 1º de maio de 2011 . Recuperado em 25 de janeiro de 2011 .
  119. ^ "Perl6 - O futuro do Perl" . www.java-samples.com . Recuperado em 18 de maio de 2021 .
  120. ^ "Documentação oficial do Perl 6" . O Projeto Perl 6. Arquivado do original em 31 de agosto de 2009 . Recuperado em 25 de janeiro de 2011 .
  121. ^ Kuhn, Bradley (janeiro de 2001). "Considerações sobre como portar Perl para a máquina virtual Java" . University of Cincinnati. Arquivado do original em 21 de março de 2008 . Recuperado em 28 de junho de 2008 . Cite journal requires |journal= (help)
  122. ^ Cromático (2015). Perl moderno . Estante pragmática. ISBN 978-1-68050-088-2.
  123. ^ "Comparação de recursos de compiladores Perl 6" . Arquivado do original em 11 de agosto de 2017 . Recuperado em 28 de março de 2012 .
  124. ^ Worthington, Jonathan (15 de julho de 2013). "Notícias Rakudo JVM: Mais testes, além de protótipos Thread e Promise" . 6guts . Arquivado do original em 5 de outubro de 2013 . Recuperado em 24 de julho de 2013 .
  125. ^ Worthington, Jonathan (31 de maio de 2013). "MoarVM: uma máquina virtual para NQP e Rakudo" . 6guts . Arquivado do original em 9 de julho de 2013 . Recuperado em 24 de julho de 2013 .
  126. ^ "renomear-lwn" . Arquivado do original em 17 de outubro de 2019 . Recuperado em 10 de novembro de 2019 .
  127. ^ "rakudo / rakudo - GitHub" . GitHub.com. Arquivado do original em 29 de julho de 2017 . Recuperado em 21 de setembro de 2013 .
  128. ^ "Anunciando Perl 7" . perl.com. 24 de junho de 2020. Arquivado do original em 24 de junho de 2020 . Recuperado em 24 de junho de 2020 .
  129. ^ "Perl 7 anunciado na Perl Conference in the Cloud" . perlfoundation.org. 24 de junho de 2020. Arquivado do original em 26 de junho de 2020 . Recuperado em 24 de junho de 2020 .
  130. ^ Wall, Larry (22 de maio de 2014). "Cultura Perl (também conhecido como o primeiro Estado da Cebola)" . Arquivado do original em 22 de maio de 2014 . Recuperado em 22 de maio de 2014 .
  131. ^ Larry Wall. “2º Estado da Cebola” . Arquivado do original em 17 de julho de 2012 . Recuperado em 12 de outubro de 2012 . (Pesquise por 'igreja')
  132. ^ Randal L. Schwartz (2 de maio de 1999). "Quem é apenas mais um hacker Perl?" . Grupo de notíciascomp.lang.perl.misc . Usenet: [email protected] . Arquivado do original em 8 de julho de 2012 . Recuperado em 5 de dezembro de 2014 . 
  133. ^ Schwartz, Randal (31 de março de 2005). "Canonical JAPH" . PerlMonks . Arquivado do original em 22 de julho de 2011 . Recuperado em 16 de maio de 2011 .
  134. ^ Greg Bacon (28 de maio de 1999). "Re: Incrementando um valor em uma fatia" . Grupo de notíciascomp.lang.perl.misc . Usenet: [email protected] . Arquivado do original em 7 de julho de 2011 . Recuperado em 12 de julho de 2011 . 
  135. ^ Para trás, Adam. "RSA em 5 linhas de perl" . Arquivado do original em 19 de janeiro de 2011 . Recuperado em 10 de janeiro de 2011 .
  136. ^ "Code Golf: O que é Code Golf?" . 29 graus. 2007. Arquivado do original em 13 de janeiro de 2012 . Recuperado em 26 de novembro de 2018 .
  137. ^ Gallo, Felix (2003). "The Zeroth Ofuscated Perl Contest" (PDF) . Em Jon Orwant (ed.). Jogos, diversões e cultura Perl: o melhor da revista Perl . O'Reilly Media. Arquivado do original (PDF) em 22 de novembro de 2009 . Recuperado em 12 de janeiro de 2011 .
  138. ^ "Poesia Perl" . PerlMonks . Arquivado do original em 27 de setembro de 2007 . Recuperado em 27 de janeiro de 2011 .
  139. ^ Conway, Damian. "Lingua :: Romana :: Perligata - Perl para o Século XXI-imum" . Arquivado do original em 30 de setembro de 2007 . Recuperado em 15 de junho de 2006 .
  140. ^ Brocard, Leon (22 de maio de 2014). "use Perl; Journal of acme" . GrnLight.net. Arquivado do original em 22 de maio de 2014.
  141. ^ "Atualização do desenvolvedor". Atualização do desenvolvedor do Dr. Dobb . Miller-Freeman. 2 . 1995.
  142. ^ a b Schwartz, Randal L. (1993). Learning Perl . O'Reilly & Associates. Bibcode : 1993lepe.book ..... S .
  143. ^ "perlintro" . Documentação do Perl 5 versão 18.0 . Perl 5 Porters e perldoc.perl.org. Arquivado do original em 9 de janeiro de 2011 . Recuperado em 30 de junho de 2013 .
  144. ^ "perlstyle" . Documentação do Perl 5 versão 18.0 . Perl 5 Porters e perldoc.perl.org. Arquivado do original em 26 de junho de 2013 . Recuperado em 30 de junho de 2013 .
  145. ^ a b "FAQ do Perl 6" . Projeto Perl 6. Arquivado do original em 1º de julho de 2013 . Recuperado em 30 de junho de 2013 .
  146. ^ a b cromático (31 de dezembro de 2012). "A implementação de Perl 5 versus Perl 6" . Arquivado do original em 29 de julho de 2013 . Recuperado em 30 de junho de 2013 .

Leitura adicional

Ligações externas