Saltar para o conteúdo

Perl

Origem: Wikipédia, a enciclopédia livre.
(Redirecionado de PERL)
 Nota: Para outros significados, veja Perl (desambiguação).
Perl
Paradigma Multiparadigma:
Surgido em 1987
Última versão 5.38.0 (2 de julho de 2023; há 16 meses[1])
Criado por Larry Wall
Estilo de tipagem dinâmica
Influenciada por
Influenciou
Licença GNU GPLv1+ / Artística[2]
Extensão do arquivo
  • .pl
  • .plx
  • .pm
  • .t
  • .pod
  • .xs
Página oficial www.perl.org

Perl é uma família de duas linguagens de programação multiplataforma, Perl 5 e Perl 6.[3]

Originalmente, Perl foi desenvolvida por Larry Wall em 1987; desde então, a linguagem passou por muitas atualizações e revisões até chegar à versão Perl 5 em 1994.[4] Perl 6, desenvolvido a partir do Perl 5 em 2000, eventualmente evoluiu para uma linguagem distinta. Ambas as linguagens continuam a ser desenvolvidas independentemente por equipes diferentes.

Perl é usada em aplicações de CGI para a web[5], para administração de sistemas linux e por várias aplicações que necessitam de facilidade de manipulação de strings[6]. Permite a criação de programas em ambientes UNIX, MSDOS, Windows, Macintosh, OS/2 e outros sistemas operacionais. Além de ser muito utilizada para programação de formulários www e em tarefas administrativas de sistemas UNIX - onde a linguagem nasceu e se desenvolveu -, possui funções muito eficientes para manipulação de textos. Seu slogan "There's more than one way to do it" (Existe mais de uma maneira de fazer isso) demonstra exatamente o propósito da linguagem: sua flexibilidade e capacidade de fazer códigos funcionais.

A linguagem Perl foi desenvolvida[7] por Larry Wall. Inicialmente, o nome seria "PEARL", porém já existia uma linguagem com esse nome, então Wall alterou para "Perl".[4] Seu lançamento deu-se em 1987 (4 anos antes do Linux) quando Larry postou o Perl no grupo de notícias da Usenet "comp.sources". Antes disso, praticamente todo processamento de texto em sistemas baseados em Unix era feito com uma porção de ferramentas, tais como o AWK, 'sed', C e diversas linguagens shell script. A ideia de Wall foi juntar as principais vantagens de todas essas linguagens: expressões regulares do 'sed'; a identificação de padrões de AWK; a profundidade de C; além da sintaxe baseada tanto em C quanto em Shell Script.

Pouco tempo depois de sua primeira versão, Perl se popularizou. Originalmente, a única documentação existente era uma única página de manual, até que, em 1991, foi publicada a referência definitiva da linguagem, Programming Perl, que ficou conhecida pelos programadores como o "livro do camelo”, por conta da imagem em sua capa.[4] Em 1992, Perl já estava na versão 4 e tornou-se uma linguagem padrão para Unix. Porém, foi também nessa época que a linguagem de Larry começou a mostrar suas limitações. Apesar de ser excelente para administradores de sistemas escreverem pequenos e poderosos códigos, era inviável desenvolver programas maiores com o Perl. Foi quando a equipe, ainda liderada por Larry Wall, começou a desenvolver a versão 5, lançada em 1994. A partir de então, a linguagem subiu de patamar; tornou-se, como muitos acreditam, uma linguagem completa, e não apenas auxiliar.[8][9]

Histórico de versões (Perl 1.0 a 5.28)

[editar | editar código-fonte]
Histórico
Versão Ano de lançamento
1.0 1987
2.0 1988
3.0 1989
4.0 1993
5.0 1994
5.005 1998
5.6 2000
5.8 2000
5.10 2008
5.11 2009
5.12 2010
5.14 2011
5.16 2012
5.18 2013
5.20 2014
5.22 2015
5.24 2016
5.26 2017
5.28 2018

[4]

Características da linguagem

[editar | editar código-fonte]
Atractor de Lorenz calculado com octave e convertido para SVG utilizando um script Perl

No geral, a sintaxe de um programa em Perl se parece muito com a de um programa em C: existem variáveis, expressões, atribuições, blocos de código delimitados, estruturas de controle e sub-rotinas.

Além disso, Perl foi bastante influenciado pelas linguagens de shell script: todas as variáveis escalares são precedidas por um cifrão ($). Essa marcação permite identificar perfeitamente as variáveis num programa, onde quer que elas estejam. Um dos melhores exemplos da utilidade desse recurso é a interpolação de variáveis diretamente no conteúdo de strings. Perl também possui muitas funções integradas para tarefas comuns como ordenação e acesso de arquivos em disco.

Perl pega emprestado as listas de Lisp, as arrays associativas (tabelas hash) de awk e as expressões regulares de sed. Isso tudo simplifica e facilita qualquer forma de interpretação e tratamentos de textos e dados em geral.

A linguagem suporta estruturas de dados arbitrariamente complexas. Ela também possui recursos vindos da programação funcional (as funções são vistas como um outro valor qualquer para uma sub-rotina, por exemplo) e um modelo de programação orientada a objetos. Perl também possui variáveis com escopo léxico, que tornam mais fácil a escrita de código mais robusto e modularizado.

Todas as versões de Perl possuem gerenciamento de memória automático e tipagem dinâmica. Os tipos e necessidades de cada objeto de dados no programa são determinados automaticamente; memória é alocada ou liberada de acordo com o necessário. A conversão entre tipos de variáveis é feita automaticamente em tempo de execução e conversões ilegais são erros fatais.

Pontos Fortes

[editar | editar código-fonte]
  • Perl é muito portátil (multiplataforma);
  • Perl é excelente para manipulação de textos e arquivos;
  • Perl é uma Linguagem de programação de alto nível, tirando do programador muitas preocupações referentes a aspectos mais baixos;
  • A linguagem Perl foi criada e desenvolvida com o ideal de Software livre. Esse aspecto tornou-se uma característica intrínseca e os programadores contam com uma ampla comunidade, que ajuda no desenvolvimento e manutenção da linguagem e dos códigos. Exemplo disso é a CPAN, Comprehensive Perl Archive Network (rede de repositórios de Perl). Este repositório possui mais de 100 mil módulos para Perl, bem como suas documentações.[10]

Pontos Fracos

[editar | editar código-fonte]
  • Scripts escritos em Perl são bem mais lentos que os de outras linguagens compiladas, isto é devido a existência do interpretador;
  • Um pequeno código PERL é capaz de realizar muitas ações. Em termos de linguagem de programação, isso geralmente significa que o código será difícil de ler e penoso de escrever;
  • Scripts escritos em Perl permitem a visualização do código fonte, impedindo os programadores de esconder o código.
  • Perl não possibilita o acesso a funções de baixo nível, reduzindo a liberdade do programador nestes tipos de caso.

Perl e a World Wide Web

[editar | editar código-fonte]
  • Perl é conhecida como o "Canivete Suíço da Internet";[11]
  • O módulo Perl CGI.pm, que faz parte da distribuição padrão, serve como script do lado do servidor
  • Perl pode manipular dados criptografados, incluindo transações de comércio eletrônico;
  • mod perl permite que o servidor web Apache possa interpretar códigos Perl diretamente;
  • O pacote DBI do Perl faz com que a integração com banco de dados seja muito simples. E com pacote DBIx::Class, utiliza-se orientação a objetos para trabalhar diretamente com bancos de dados;
  • Existe um Web Framework (servidores web) chamado Catalyst que é feito em Perl, bastante utilizado;

Portabilidade

[editar | editar código-fonte]
  • Perl é uma linguagem que já foi portada para diversos sistemas operacionais;

Tipos de dados

[editar | editar código-fonte]

O Perl tem uma série de tipos de dados fundamentais, porém é considerada uma linguagem não tipada, ou seja, as variáveis não são restringidas a usar um único tipo. Os mais utilizados são: escalar, vetor (array), hash (vetor associativo), handle de um arquivo e sub-rotinas.

  • Escalar: é um valor único, que pode ser um número, uma string ou uma referência. É declarada com um '$', como:
$num = 34;
$nome = "joe";
$pi = 3.14;
  • Array: é um conjunto sequencial ordenado de escalares. O índice inicial de uma variável array é zero (0). É declarada com um '@', como:
@numeros = (1,2,3);
  • Hash: Um hash, ou array associativo, é um mapeamento (ou seja, chaves de referências) de strings para escalares. Representa uma coleção de pares de chave/valor. São declarados com um '%', como:
%hash = (1,"a",2,"b",3,"c");
  • Handle: é um mapeamento para um arquivo, dispositivo ou pipe, que é aberto para leitura, escrita, ou ambos
  • Sub-rotina: é um trecho de código que pode ser executado, para o qual podem ser passados argumentos, e do qual podem ser recebidos resultados

Exemplos de código

[editar | editar código-fonte]

A primeira linha de um código em Perl deve sempre começar com o shebang:

# !/usr/bin/perl

Esta linha informa onde está localizado o compilador do Perl e pode variar de sistema para sistema.

Programa Olá Mundo!

[editar | editar código-fonte]
Ver artigo principal: Programa Olá Mundo
# !/usr/bin/perl
print "Olá, Mundo!\n";
# Isto é um comentário em Perl

=begin
Este é um comentário
de múltiplas linhas
em Perl
=cut

Note o ponto e vírgula no final de cada expressão. Assim como em C e C++, Perl exige que o usemos para indicar o final de uma expressão. A última linha é a que apaga o arquivo. unlink equivale a 'rm' e $0 é uma referência simples ao arquivo que está sendo executado.[12]

Expressão regular - Filtro

[editar | editar código-fonte]

Um dos pontos fortes de Perl é o eficiente uso de expressões regulares no tratamento de textos e arquivos. Identificamos essas expressões pelos delimitadores "/.../", ou seja, tudo o que estiver entre essas barras será tratado como um pattern (padrão) para ser encontrado em determinado texto. O programa a seguir lê um texto e busca exatamente a expressão "foo":

while(<>) {
    /foo/;
    print;
}

Assim como as expressões regulares de Linguagens Regulares, Perl admite alguns símbolos especiais que facilitam a descrição de um padrão. São eles:

  • "."
  • "*"
  • "?"
  • "+"
  • "[" e "]"
  • "(" e ")"
  • "{" e "}"
  • "^"
  • "$"
  • "|"
  • "\"

Se quisermos utilizar o real significado de um desses símbolos, basta colocarmos uma barra invertida exatamente antes do mesmo.[13]

O código abaixo busca o padrão assim descrito: nenhum ou muitos '+' seguido de um ou nenhum 'b'

while (<>) {
    /\+*b?/
    print;
}

É possível obter o mesmo resultado com uma única linha (um "one-liner"):

perl -pi -e '/\+*b?/' arquivo.txt

De fato, é comum a ocorrência de problemas que exigem dezenas de linhas em outras linguagens de programação mas que podem ser resolvidos com uma única linha de código em Perl, especialmente na área de ETL.

Em Perl, strings podem ser descritas com aspas duplas ou simples, porém estas descrevem a string literalmente, enquanto aquelas interpretam símbolos de código. Exemplificando, as duas linhas de código a seguir resultam em saídas diferentes:[14]

print "Hello World!\n"; 
print 'Hello World!\n';

Saída:

Hello World!

Hello World!\n

Na primeira linha, com aspas duplas, o símbolo \n é interpretado como uma quebra de linha, enquanto, na segunda linha, o símbolo é impresso literalmente.

Estruturas de controle

[editar | editar código-fonte]

Perl tem as estruturas básicas esperadas em qualquer linguagem de programação:

  • if
  • while
  • for
  • until

Perl tira boas ideias de linguagens naturais, como a possibilidade de inverter a ordem dos elementos em uma frase. Por exemplo:

if ($DEBUG) {
  print "ouch!";
}

Pode ser reescrita como:

print "ouch!" if $DEBUG;

O laço for em Perl segue o mesmo estilo da linguagem C, inicializando uma variável, determinando seu limite e o passo do incremento. O código abaixo é um exemplo de for em Perl, imprimindo, a cada iteração, o valor da variável i, indo de 0 a 5.[15]

for ($i=0; $i<5; $i++){
    print "$i\n";
}


Módulos e frameworks

[editar | editar código-fonte]

Perl conseguiu reunir módulos, classes, scripts e frameworks desenvolvidos pela comunidade em um só lugar, este lugar chama-se CPAN, repositório onde encontra-se quase tudo já desenvolvido para a linguagem:

Interpretador Perl

[editar | editar código-fonte]

Se você está num sistema Linux (ou a maioria dos sistemas UNIX, incluindo Mac Os X), provavelmente já há uma instalação do compilador Perl incluída no seu sistema. Digite o seguinte comando no terminal para descobrir qual versão você tem instalada:[16]

perl -v
  • TWiki - Sistema Wiki de escrita de conteúdo colaborativo
  • RT - Sistema de processamento de Tickets
  • Apache Spam Assassin - Sistema extensível de filtro de Spam em email
  • dvd::rip - Programa para cópias de DVD
  • AWStats - "Advanced Web Statistics" (AWStats) é um sistema de análise de logs de servidores Web e de geração de estatísticas
  • DuckDuckGo - Motor de busca com a filosofia de não registrar as informações do usuário.[17]

Um dos pontos mais fortes da linguagem Perl é a comunidade de usuários em todo o mundo. Segundo a tradição internacional, esses grupos são denominados Perl Mongers.

Um grande ponto de encontro da comunidade é o YAPC. YAPCs são encontros promovidos pela comunidade para discutir coisas sobre Perl, os encontros podem ter caráter regional ou nacional. No Brasil ocorre uma vez por ano o YAPC::Brasil "Encontro Brasileiro de Programadores Perl".

Em 2009 o YAPC::Brasil aconteceu de 29 de outubro a 1 de novembro em Niterói, Rio de Janeiro[18]. Em 2010 o evento ocorreu de 25 a 31 de outubro em Fortaleza, Ceará[19]. Em 2013, o evento ocorreu nos dias 15 e 16 de Novembro, em Curitiba, Paraná. Em 2014, o evento foi realizado em Itapema, Santa Catarina, nos dias 19 e 20 de Setembro[20].

Outros projetos Wikimedia também contêm material sobre este tema:
Wikilivros Livros e manuais no Wikilivros

Referências

  1. «Perl 5.38.0 is now available!». www.nntp.perl.org. 2 de julho de 2023. Consultado em 18 de outubro de 2023 
  2. «Perl Licensing». dev.perl.org. Consultado em 20 de março de 2018 
  3. «About Perl - www.perl.org». www.perl.org. Consultado em 8 de março de 2019 
  4. a b c d «History of Perl». Perl (em inglês). Consultado em 8 de março de 2019 
  5. «Programação CGI usando a linguagem Perl». www.ime.usp.br. Consultado em 6 de novembro de 2015 
  6. «Projeto de Iniciação Científica - Linguagem Perl». www.ime.usp.br. Consultado em 6 de novembro de 2015 
  7. «Perl creator Larry Wall: Rethought version 6 due this year». InfoWorld. Consultado em 10 de janeiro de 2016 
  8. «A.1 A Brief History of Perl». www.linuxutopia.org. Consultado em 31 de Março de 2013 
  9. Cozens,Simon; Wainwright,Peter (2000). Beginning Perl (em inglês) 1a. ed. [S.l.]: Wrox Press. 700 páginas. ISBN 1861003145 
  10. «The Comprehensive Perl Archive Network». Consultado em 31 de Março de 2013 
  11. Cozens,Simon; Wainwright,Peter (2000). Beginning Perl (em inglês) 1a. ed. [S.l.]: Wrox Press. p. 4. 700 páginas. ISBN 1861003145 
  12. «Aprendendo Perl, Parte 1 LG #61». www.gacetadelinux.com. Consultado em 13 de Março de 2011 
  13. «Linguagem Perl - Expressões Regulares». www.numaboa.com.br. Consultado em 31 de Março de 2013 
  14. «Perl String». Perl Tutorial (em inglês). Consultado em 16 de março de 2019 
  15. «Perl for loops». www.perl.com (em inglês). Consultado em 16 de março de 2019 
  16. «Download Perl - www.perl.org». www.perl.org. Consultado em 13 de Março de 2011 
  17. «DuckDuckGo: A New Search Engine Built from Open Source». 10 de julho de 2010. Consultado em 25 de outubro de 2015. Arquivado do original em 17 de março de 2011 
  18. Site do YAPC::Brasil 2009
  19. «Site do YAPC::Brasil 2010». Consultado em 1 de agosto de 2010. Arquivado do original em 19 de julho de 2014 
  20. «Site do YAPC::Brasil 2014». Consultado em 9 de janeiro de 2015. Arquivado do original em 9 de janeiro de 2015 

Livro: PERL Guia de Consulta Rápida, Autor: Décio Jr., Editora Novatec, ISBN 85-85184-80-9

Ligações externas

[editar | editar código-fonte]