Perl

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Ambox important.svg
Foram assinalados vários aspectos a serem melhorados nesta página ou secção:
Perl
Paradigma Multiparadigma: funcional, imperativo, Orientação a objetos, reflexivo, estruturado, genérico
Surgido em 1987
Última versão 5.16.0 (20 de maio de 2012)
Versão em teste 5.17.0 (20 de maio de 2012)
Criado por Larry Wall
Estilo de tipagem: dinâmica
Influenciada por AWK, C, C++, Lisp, Pascal, sed, Smalltalk, Shell do Unix
Influenciou Python, PHP, Ruby, ECMAScript, JavaScript, Falcon, Perl 6
Licença: GNU General Public License, Licença Artística
Página oficial www.perl.org

Perl é uma linguagem de programação estável e multiplataforma, usada em aplicações de missão crítica em todos os setores, sendo destacado o seu uso no desenvolvimento web de todos os tipos. 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.

Perl é uma das linguagens preferidas por administradores de sistema e é especialmente versátil no processamento de cadeias (strings), manipulação de texto e no pattern matching implementado através de expressões regulares, além de ser bastante adequada para o desenvolvimento de projetos utilizando uma metodologia ágil.

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 já foi portada para mais de 100 diferentes plataformas e é bastante usada em desenvolvimento web, finanças e bioinformática.

Origem[editar | editar código-fonte]

A linguagem Perl foi desenvolvida por Larry Wall. 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. Em 1992, encontrava-se já 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.[1] [2]

Obs.: Para mais informações, vide a timeline do Perl nos Links Externos

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 subrotina, 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]

  • Foi feito para fácil compreensão humana;
  • Perl é muito portátil;
  • 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;

Por conta da facilidade em seu aprendizado, inúmeros códigos são escritos para uso pessoal e, assim, não possuem a preocupação da legibilidade. Por isso, muitas pessoas acabaram por dar à linguagem a fama de ser mal estruturada e ilegível; o que é errado, pois Perl admite uma boa escrita e estruturação, como muitas outras linguagens.

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.[3]

Resumo[editar | editar código-fonte]

Perl e a World Wide Web[editar | editar código-fonte]

  • Perl é conhecida como o "Canivete Suíço da Internet";[4]
  • 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;
  • Perl pode ser usado em praticamente todas as áreas relacionadas à Internet.

Portabilidade[editar | editar código-fonte]

  • Perl é, senão a mais, uma das linguagens mais portáteis;
  • Pode ser portada para mais de 100 Sistemas Operacionais diferentes;

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
$joe
$pointer
  • Array: é um conjunto sequencial ordenado de escalares. O índice inicial de uma variável array é zero (0). É declarada com um '@', como:
@v
@list
@variable
  • 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:
%people
%x
%this_is_a_hash
  • 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]

#!/usr/bin/perl 
print "Olá, Mundo!\n";

Comentário[editar | editar código-fonte]

# Isto é um comentário em Perl

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.[5]

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.[6]

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.

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 idéias 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;

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:[7]

perl -v

Aplicações[editar | editar código-fonte]

  • 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

Comunidade[editar | editar código-fonte]

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[8] . Em 2010 o evento ocorreu de 25 a 31 de outubro em Fortaleza, Ceará[9] . Em 2013, o evento ocorrerá nos dias 15 e 16 de Novembro, na cidade de Curitiba, Paraná.

Referências

  1. A.1 A Brief History of Perl. www.linuxutopia.org. Página visitada em 31 de Março de 2013.
  2. Cozens,Simon; Wainwright,Peter. Beginning Perl (em Inglês). 1a. ed. [S.l.]: Wrox Press, 2000. 700 pp. ISBN 1861003145 Página visitada em 31 de Março de 2013.
  3. Título não preenchido, favor adicionar. Página visitada em 31 de Março de 2013.
  4. Cozens,Simon; Wainwright,Peter. Beginning Perl (em Inglês). 1a. ed. [S.l.]: Wrox Press, 2000. 700 pp. p. 4. ISBN 1861003145 Página visitada em 31 de Março de 2013.
  5. Aprendendo Perl, Parte 1 LG #61. www.gacetadelinux.com. Página visitada em 13 de Março de 2011.
  6. Linguagem Perl - Expressões Regulares. www.numaboa.com.br. Página visitada em 31 de Março de 2013.
  7. Download Perl - www.perl.org. www.perl.org. Página visitada em 13 de Março de 2011.
  8. Site do YAPC::Brasil 2009
  9. Site do YAPC::Brasil 2010

Ver também[editar | editar código-fonte]

Portal A Wikipédia possui o portal:
Outros projetos Wikimedia também contêm material sobre este tema:
Wikilivros Livros e manuais no Wikilivros

Bibliografia[editar | editar código-fonte]

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]