A neutralidade deste artigo foi questionada. (Março de 2018) |
Esta página ou seção foi marcada para revisão devido a incoerências ou dados de confiabilidade duvidosa.Outubro de 2010) ( |
Perl | |
---|---|
Paradigma | Multiparadigma: |
Surgido em | 1987 |
Última versão | 5.38.0 (2 de julho de 2023[1]) |
Criado por | Larry Wall |
Estilo de tipagem | dinâmica |
Influenciada por | |
Influenciou | |
Licença | GNU GPLv1+ / Artística[2] |
Extensão do arquivo |
|
Página oficial | www |
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]
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 |
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.
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.
$num = 34;
$nome = "joe";
$pi = 3.14;
@numeros = (1,2,3);
%hash = (1,"a",2,"b",3,"c");
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.
# !/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]
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:
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.
Perl tem as estruturas básicas esperadas em qualquer linguagem de programação:
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";
}
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:
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
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].
Livro: PERL Guia de Consulta Rápida, Autor: Décio Jr., Editora Novatec, ISBN 85-85184-80-9