Você está na página 1de 28

Perl

3 - Linguagens que ela se assemelha ou derivada, linha evolutiva e padronizaes adotadas.


No geral, a sintaxe de um programa em Perl se parece muito com a de um programa em C: existem variveis, expresses, atribuies, blocos de cdigo delimitados, estruturas de controle e sub-rotinas. O Perl foi bastante influenciado pelas linguagens de shell script: todas as variveis escalares so precedidas por um cifro ($). Essa marcao permite identificar perfeitamente as variveis num programa, onde quer que elas estejam. Perl tambm possui muitas funes integradas para tarefas comuns como ordenao e acesso de arquivos em disco. Perl pegou emprestado as listas de Lisp, as arrays associativas (ou seja, arrays indexados por palavras chave) da linguagem AWK e as expresses regulares de sed (Stream EDitor ou editor de fluxo), simplificando e facilitando qualquer forma de interpretao e tratamentos de textos e dados em geral.

Diferente da maioria dos shells (como awk e sed), o interpretador transforma (parse) e compila o programa dentro de um formato interno antes de execut-lo. Este meio evita erros de sintaxe em tempo execuo, e os espaos em branco e comentrios so retirados do cdigo melhorando assim a performance. Ento Perl como um compilador e interpretador. Ele compilado porque o programa completamente lido transformado (parser) antes da execuo da primeira declarao. E interpretada porque no h cdigo objeto ocupando espao em disco.

Linha evolutiva
E em 1987, Larry Wall mostra para o mundo a primeira verso da linguagem Perl, o Perl 1.0. Inicialmente, Perl foi definida como sendo uma linguagem de interpretao otimizada que muito til para a leitura de arquivos de textos, extraindo informaes relevantes destes artigos e gerando relatrios a partir destas informaes. Desde o inicio ate o PERL 4, a linguagem foi sendo continuamente utilizada e, apesar disso, permaneceu to estvel que os desenvolvedores programaram projetos inteiros usando verses de desenvolvimento. PERL 3 adotou a GNU "General Public License" e PERL 4 adotou uma Artistic License, para atrair mais usurios. As duas licenas protegem a natureza gratuita e de cdigo abeto de PERL, mas a Artistic License permite que PERL seja embutida crescida em produtos proprietrios com certas condies. PERL 5 foi uma grande reorganizao que consertou muitas da limitaes da linguagem, tornando-a mais poderosa, mais legvel e mais extensvel. Ela havia crescido de uma ferramenta de processamento de textos para uma linguagem de programao de propsito geral com seu prprio ambiente de desenvolvimento de software completo. O PERL 6 ainda est em desenvolvimento (h 10 anos) mas j h implementaes como o Raduko Star e o Perlito(MiniPearl)

6 - O programa "Hello world!"


Veja duas formas de implementao do famoso Hello World! em Perl Linha de comando: perl -e print "Hello World!\n";

Arquivo Script: Com um editor de textos digite: print "Hello World!\n"; Salve o arquivo com o nome hello.pl No terminal digite: perl hello.pl

9 - Case Sensitive?
Assim como C, Perl uma linguagem casesensitive, ou seja, uma varivel como $Sensitive diferente de $sensitive

13 -Amarrao
Como feita a amarrao de endereo a uma varivel? Em tempo de execuo, no momento da primeira atribuio. Como feita a amarrao do tipo de uma varivel? Estaticamente. Cada tipo de varivel tem um espao de nome: se comea com $ escalr, com @ array e com % hash (ex.: $foo, @foo e %foo so trs variveis distintas)

Amarrao de valor: Em tempo de execuo Amarrao de escopo A amarrao de escopo bastante peculiar: Quando se atribui um valor uma varivel (no importa onde) uma varivel global criada. Quando inicializada com my() ento fica com escopo lxico Quando inicializada com local() fica com escopo dinmico: valida no bloco corrente ou em qualquer funo chamada de dentro do bloco.

Tipos das variveis da linguagem segundo o seu tempo de vida: O tipo da varivel conhecido sempre em tempo de compilao, mas seus demais atributos (exceto nome) so amarrados conforme haja necessidade dinamicamente. Ex: my $str = "Frase 1"; (...) $str = "Uma outra frase qualquer"; # <-- Aqui h realocao de memria e liberao do espao anterior caso no haja referncias a ele.

Mecanismos para a inicializao de variveis: A inicializao feita na primeira atribuio, ou em casos especficos quando se trata de variveis especiais. (Elas guardam erros, capturas de expresses regulares, valores padro, etc.)

15 Tipos Compostos
Quais os tipos de dados primitivos da linguagem?
Escalares - Podem ser nmeros (inteiros ou pontoflutuante), cadeias de caracteres ou referncias Listas Hashes ou Listas Associativas

interessante ressaltar que entre escalares no h diferenciao, do mesmo modo que entre vetores e hashes.

Sequncias So tratadas como listas


0..9 --> (0,1,2,3,4,5,6,7,8,9) 'A'..'C' --> ('A','B','C')

Comprimento de cadeias: dinmico

Mapeamento Finito
Quais os tipos permitidos para ndices? Escalares. No caso de pontoflutuante arredondado para o prximo inteiro e no caso de string convertida para 0. Nmeros negativos pegam os elementos do fim para o comeo. ex @array = 1..10. $array[-1] = 10, $array[-2] = 9, $array['String Qualquer'] = 1, $array[0.9] = 1, $array[1.1] == 2. Quando feita a amarrao de valores aos limites do array? Em tempo de execuo, conforme so atrubidos/adicionados/retirados valores. Quando feita a alocao do array? Em tempo de execuo, nas mesmas circustncias do item anterior Quantas dimenses so permitidas? Uma. Arrays multidimensinais podem ser emulados fazendo listas de listas, usando referncias. Ex: @matriz = ([0,1,2],[3,4,5],[6,7,8]). Perceba que [1,2,3] uma referncia para (1,2,3), portanto um escalar. possvel se referir ao 4 das seguintes maneiras: ${$array[1]}[1] ou abreviar para $array[1]->[1] ou para $array[1][1]. Pode-se inicializar um array? Sim. No s inicializar, mas tambm atribuir e retornar de funes.

Produto Cartesiano
Estruturas compostas podem ser obtidas combinando arrays, hashs e escalares (em especial referncias), gerando algo como lista de listas. Construes parecidas com registros de pascal ou unions de C no existem.

Ordinais
Apenas escalares quando contm valores inteiros.

Unio, Conjuntos
No h nada parecido com unies, registros variantes ou conjuntos em Perl

Recurso
H suporte para recurso, mas em condies extremas pode falhar em alguns sistemas operacionais, que limitam o tamanho da pilha para cada programa.

Ponteiros
O mais parecido que existem em Perl com ponteiros so as referncias. Ex: my $var1 = "bli"; my $var2 = \$var1; # $var2 passa a ser uma referncia para $var1 ${$var2} = "bla"; print $var1; # Imprime "bla"; Referncias so escalares como outros quaisquer, ou seja, se aplicam as mesmas regras de amarrao e escopo. Neste exemplo possvel visualizar tambm a sinonmia de variveis quando $var2 ao ser uma referncia de $var1 nos permita modificar o valor atravs de ambas ($var1 ou $var2).

24. Recursos para serializao.


No Perl no h recursos nativos para tal funo, mas pode a mesma ser feita atravs de mdulos como o Storable, que uma forma bastante estvel de serializao do Perl.

30. Desvio incondicional.


Os desvios incondicionais do PERL: return (EXPRESSO) - sai da subrotina retornando o valor da EXPRESSO goto (RTULO) - desvia para a sentena rotulada com RTULO Iteradores tambm fazem parte desse conjunto.

Iteradores
Next, last e redo. O comando next salta os comandos restantes no corpo de uma estrutura de lao e executa a prxima iterao do lao. O comando last provoca a sada imediata de uma estrutura. A execuo do programa continua com o primeiro comando aps a estrutura. O comando redo reinicia um lao sem avaliar o teste de continuao do lao. Um rtulo (LABEL), alm de atuar como descrio do bloco de cdigo em uma s palavra, atua como destino para os comandos de controle de lao next, last e redo. Estes comandos podem usar um rtulo de um bloco como um argumento para fazer referncia a um bloco de lao especfico. Quando estes comandos so executados sem argumentos, eles operam sobre o lao no qual aparecem.

33 - Legibilidade e Confiabilidade
Perl uma linguagem muito poderosa e verstil. Podemos dizer, contudo, que a sua flexibilidade pode incomodar programadores que admiram uma linguagem mais "segura" para fazer seus programas. Devido ao fato do Perl ignorar os espaos em branco em um cdigo possvel escrever o mesmo de forma mais legvel. Um hash como este: %h = ( intel, core, amd,phenom); Pode ser escrito dessa forma: %h = ( Intel => core, #Linha Core de processadores Intel amd => phenom, #Linha Phenom de processador AMD ); Facilitando a leitura e permitindo o acrscimo de comentrios em locais ideais. Mas, embora Larry Wall - autor da PERL - afirme que a linguagem seja mais funcional do que elegante, a maioria dos programadores rapidamente descobre que o cdigo PERL muito legvel. Podemos dizer, portanto, que uma das grandes qualidades da linguagem PERL unir eficincia disponibilidade de utilizao.

Redigibilidade
Existem diversos problemas que podem ser resolvidos escrevendo-se uma nica linha no perl como no exemplo do programa Hello World l no incio. Um pequeno cdigo PERL capaz de realizar muitas aes. Em termos de linguagem de programao, isso geralmente significa que o cdigo ser difcil de ler e penoso de escrever.

Eficincia
Um script Perl pode em algumas situaes ser mais rpido que um programa compilado em C, porm devido a no otimizao para a mquina (recursos de processadores com instrues especificas), sua eficincia no , na maioria das vezes, melhor. Ele se torna mais eficiente quando a tarefa est relacionada manipulao de arquivos de texto...

Facilidade de aprendizado
A Perl considerada uma linguagem de hackers, com a qual se pode obter resultados incrveis atravs dos comandos de um programa. Para os principiantes, o cdigo fonte de um script Perl mais parece um desastre de converso ou um dump acidental. A linguagem possui uma sintaxe temperamental que, propositadamente, no se prende a padres predefinidos. Perl se baseia na linguagem C, porm no pode ser comparada C, ao Pascal ou a outra linguagem qualquer das modernas 4GL. Quem conhece outras linguagens de programao e resolver encarar a Perl ter que reaprender muita coisa mas, em compensao, descobrir aspectos muito interessantes.

Portabilidade
Voc encontra essa linguagem instalada por padro em qualquer sistema clone do UNIX de respeito, incluindo o Linux. Mas Perl no se limita a apenas esses sistemas, sendo ela multiplaforma: isso gera possibilidades muito interessantes, como criar programas que possam rodar em sistemas operacionais diferentes sem reescrever nenhum cdigo. Hoje ela est disponvel para sistemas como Microsoft Windows (vrias verses), MAC OS, BeOS e muitos outros.

Ortogonalidade
Um dos lemas principais do Perl existe mais de uma maneira de fazer: a expressividade da linguagem to grande que algumas pessoas conseguem escrever poemas utilizando cdigo funcional em Perl (entenda por cdigo funcional algo que executado e gera alguma sada, sem erros)! Exemplo: unless usado como uma forma alternativa para executar o else de um if-else, o que significa que o bloco do unless, s executado se a expresso for avaliada como falsa. Isto pode ser considerado um aspecto positivo para a legibilidade do cdigo, pois evita que voc tenha que negar uma expresso em um comando if, para ter esse mesmo efeito, isso , a linguagem j te oferece esse artifcio, porm um ponto negativo para a ortogonalidade, j que faz com que a linguagem tenha mais de uma maneira de fazer a mesma coisa.

Reusabilidade.
Nesta propriedade o Perl um belo exemplo. Scripts Perl so altamente difundidos, o Perl tem um dos maiores repositrios de bibliotecas do mundo onde se pode achar scripts com diversas aplicaes. Alm disso a linguagem Perl possui diretivas tpicas de CGI (O termo CGI vem de Common Gateway Interface. apenas uma outra designao para o que conhecemos como API (Application Programming Interface). Resumo da histria, a CGI apenas uma API para o servidor web) prprias para lidar com dados de formulrios, acionar servios do servidor como e-mail, pginas HTML, etc.

CPAN
CPAN: 'Comprehensive Perl Archive Network', ou 'Rede de arquivos compreensveis perl'. Tambem conhecido como repositrio de mdulos perl. Neste momento o cpan possi 98,463 mdulos perl em 23,242 distribuies, escritos por 9,170 autores e espelhado em 259 servidores. No cpan voc encontra todo tipo de mdulos perl... desde aplicaes do google, do twitter, do facebook, etc, implementaes de algoritmos de frmulas bancrias, diversos frameworks, middlewares, bots, ide, servidor web, proxy, o que voc imaginar alguem j deve ter implementado e adicionado ao cpan. Para fazer uma busca no cpan muito simples, voc acessa: http://search.cpan.org e digita algo no campo de busca, ex: "google" para ver uma lista de mdulos que implementam "google". Uma dica para escolher alguns bons mdulos seguir as recomendaes do mdulo Task::Kensho. o Task::Kensho tem como proposta apresentar os melhores mdulos recomendados para tarefas especficas.

Curiosidade:
Existem duas "regras", assim chamadas, tiradas da documentao oficial do Perl: Larry por definio est sempre certo sobre como o Perl deve se comportar. Isto significa que ele tem o poder final do veto na funcionalidade do todo. permitido a Larry mudar de ideia mais tarde sobre qualquer assunto, no importa se ele invocou previamente a regra 1.

Você também pode gostar