You are on page 1of 5

PERL

Adeilson F. Bacelar1 , Jefferson Chaves1


1

Departamento de Informatica e Estatistica Universidade Federal do Piaui (UFPI)


Caixa Postal 15.064 91.501-970 Teresina PI
Abstract. This meta-paper describes the style to be used in articles and short
papers for SBC conferences. For papers in English, you should add just an
abstract while for the papers in Portuguese, we also ask for an abstract in Portuguese (resumo). In both cases, abstracts should not have more than 10 lines
and must be in the first page of the paper.
Resumo. Este meta-artigo visa descrever atributos/caractersticas da linguagem Perl afim de melhorar o entendimento da linguagem e proporcionar
assim o seu melhor uso. Entre os temas abordados neste artigo teremos: tipo
de dados e operaco es, comandos utilizados pela linguagem, programaca o orientada a objetos

1. Informacoes Gerais
A sigla PERL (Practical Extraction And Report Language), possibilita a criaca o de programas em ambientes UNIX, MSDOS, Windows, Macintosh, OS/2, e em outros sistemas
operacionais,Perl foi criado em 1987 pelo Larry Wall o senhor da foto. Trata-se de uma
linguagem que possui funco es muito eficientes para manipulaca o de textos, o que a torna
muito popular para programaca o de formularios WWW, alem de ser muito utilizada em
tarefas administrativas de sistemas UNIX, A linguagem PERL esta sendo amplamente
utilizada por ser rapida, eficiente e de facil manutenca o na programaca o de uma ampla
faixa de tarefas, particularmente aquelas que envolvem manipulaca o de arquivos de texto.

2. Introduca o
Perl foi originalmente uma linguagem otimizada para a digitalizaca o de arquivos de texto
arbitrarias, extraca o de informaco es a partir desses arquivos de texto, e impressao de
relatorios com base nessa informaca o. Ele rapidamente se tornou uma boa linguagem
para muitas tarefas de gerenciamento do sistema. Ao longo dos anos, Perl tem crescido
em uma linguagem de programaca o de proposito geral. E amplamente utilizada para tudo,
desde rapidos one-liners para o desenvolvimento de aplicaco es em grande escala.
A linguagem pretende ser pratica (facil de usar, eficiente, completa) ao inves
de bonita (pequena, elegante, mnima).E uma linguagem familiar e facil de usar para
usuarios Unix para agitar soluco es rapidas para problemas irritantes. Suas instalaco es
de programaca o de proposito geral apoiar processuais, funcionais e orientadas a objetos
paradigmas de programaca o, fazendo a linguagem Perl confortavel para o longo prazo em
grandes projetos, seja qual for o seu dobrado. Razes do Perl em processamento de texto
nao foram esquecidos ao longo dos anos. Ele ainda possui algumas das mais poderosas
expressoes regulares para ser encontrado em qualquer lugar, e seu apoio ao texto Unicode
e de classe mundial. Ele lida com todos os tipos de texto estruturado, tambem, atraves de
uma extensa coleca o de extensoes.

3. Tipo de dados
Tipo de Dados define o conjunto de valores que uma variavel pode ter e as operaco es que
podem ser aplicadas a este conjunto. Perl possui 3 tipos de dados: Escalares, Matrizes de
Escalares, Matrizes Associativas de Escalares, elas podem ser classificadas em
Primitivos
Estruturados
Os valores geralmente sao referenciado pelo nome, ou atraves de uma referencia
nomeada, normalmente o nome e um u nico identificador(pode ser uma sequencia que
comeca com uma letra ou sublinhado , e contendo letras, sublinhados e dgitos). Perl tem
suas proprias variaveis internas cujos os nome nao seguem estas regras, eles tem nomes
estranho para evitar conflito com suas variaveis normais. Valores escalares sao sempre
nomeados com $, mesmo quando se refere a um escalar que e parte de uma matriz ou
de um hash. Por exemplo:
$
$
$
$

# dias o simples valor escalar dias


d i a s [ 2 8 ] # 29 o e l e m e n t o de um a r r a y @ d i a s
d i a s { f e v e r e i r o } # o v a l o r f e v e r e i r o de h a s h% d i a s
# D i a s # o u l t i m o i n d i c e de s e r i e @ d i a s
Podemos indicar Arrays inteiros(fatias de arrays e hashes) por @, exemplo:

$ # dias ( dias $ [0] , $ dias [1] , . . . $dias [n ])


$ d i a s [ 2 , 3 , 4 ] # mesmo que ( $ d i a s [ 2 ] , $ d i a s [ 3 ] , $ d i a s [ 4 ] )
$ d i a s { a , c } # o mesmo que ( $ d i a s { a } , $ d i a s { c } )
Para cada tipo de variavel tem um espaco de nomes com identificadores diferentes entao @ a e $a sao diferentes isto pode enfraquecer a legibilidade mas Perl permite
esta confusao. Existe ainda as variaveis que nao sao reservadas inicializar com um identificador, estas palavras sao reservadas pelo rotulo Ex: voce nao pode ter aberta(LOG,
logfile) em vez de aberto(log, arquivo de log),pois log e reservado.
Todos o valores em Perl sao escalares, este escalar pode conter um numero, uma
string ou uma referencia. embora um escalar nao possa conter diretamente varios valores
o mesmo pode conter referencia a uma matriz ou hash que por sua vez contem varios
valores. Apesar de strings e numeros serem tratados quase que igualmente, isso nao
ocorre em relaca o as referencias que sao fortemente tipadas.
Um valor escalar pode ser considerado FALSE no sentido se e indefinido, a string
for nula ou o numero ser 0 e TRUE se e qualquer outra coisa mas isto e apenas um
tipo especial de contexto booleano. Podemos encontrar o tamanho de um Array @ dias
avaliando #dias, no entanto este te da o ndice do ultimo elemento da matriz, podemos
encurtar uma matriz e ser quiser alongar uma matriz previamente encurtada nao trara de
vota os valores que estavam naquele elemento. Se avaliar uma hash m contexto escalar,
ele retorna FALSE se estiver vazia no caso contrario retorna TRUE, e o valor retornado
consiste em um par(separados por uma barra) que contem o numero de blocos utilizado e
o numero de blocos vazio.

4. Programaca o Orientada a Objetos


Programaca o Orientaca o a Objetos, refere-se ao paradigma de programaca o onde o desenvolvimento do software e regido pelas definico es e relacionamentos entre os objetos que

compoem o mesmo. Tem como caracterstica uma maior manutenibilidade em relaca o a


outros metodos de desenvolvimento, e uma maior proximidade entre a analise do problema e a implementaca o da soluca o.
Em POO um objeto e uma abstraca o para algo do mundo real, por exemplo, um
automovel, possui algumas caractersticas, como composica o, placa, chassi, tipo de motor, etc, estas caractersticas podem ser abstrados em uma classe. Uma classe e formada
por atributos e metodos. Os atributos sao caractersticas da classe, e os metodos sao comportamentos que a classe possui. Atributos e metodos podem ser arranjados dentro de
uma classe afim de permitir que somente ela seja responsavel pelo conhecimento daquele
objeto, isso e chamado de encapsulamento. Uma classe pode ser implementada de forma
responder de formas diferentes caso seja solicitado um mesmo metodo com parametros
diferentes, isso recebe o nome de polimorfismo.
4.1. POO e Perl
Perl nao foi criada para atender a um u nico paradigma e deixa o programador livre para
pensar e buscar diferentes formas para resolver problemas. Sua grande versatilidade a
torna uma linguagem multiparadigma, e a orientaca o a objetos e um dos paradigmas suportado pela linguagem Perl.
O suporte nativo a orientaca o a objetos em Perl e incompleto, e mesmo assim,
muito interessante. Para utilizar a OO, se faz necessario um bom conhecimento de subrotinas (perlsub), referencias (perlref) e modulos/pacotes (perlmod). Em resumo o suporte
a OO em Perl e bastante simples, estavel, poderoso e muito bem integrado a` linguagem,
mas nao e em absoluto fundamental a` mesma como e o caso de Java, Ruby ou Python.
Em Perl, as classes sao chamadas pacotes, e sao declaradas com o operador package. O final do pacote e onde termina o arquivo ou onde e declarado um novo pacote.
Caso o programador queira comecar o programa em si no mesmo arquivo onde sao criados os pacotes, basta declarar o incio do pacote main.
O metodo construtor e chamado new e o destruidor DESTROY. Ha um procedimento padrao no construtor, que deve ser executado invariavelmente: determinar a classe,
criar a instancia, transformar a instancia numa instancia real da classe (com o operador
bless) e retornar a instancia pronta. Por exemplo, a criaca o de uma classe Pessoa, com os
atributos primeiroNome e ultimoNome (nome e sobrenome):
package P e s s o a ;
sub new{
my $ c l a s s = s h i f t ;
my $ s e l f = {
p r i m e i r oN o m e => s h i f t ,
ultimoNome => s h i f t ,
};
return b l e s s $self , $ c l a s s ;
}
Funco es em Perl recolhem os parametros no vetor especial @ . No caso de
metodos, o primeiro argumento e a instancia escopo do metodo, assim como Python.
Funco es em Perl recolhem os parametros no vetor especial. No caso de metodos, o

primeiro argumento e a instancia escopo do metodo, assim como Python. O operador


shift retorna o proximo elemento do vetor o padrao e @ . Se for a primeira execuca o
de shift, retorna o primeiro elemento, se for a segunda, retorna o segundo elemento, e
assim por diante. O $ this recebe o primeiro argumento, que e o escopo de execuca o,
ou seja, uma representaca o da propria classe. A declaraca o de $ self cria escopo escalar
semelhante a um hash, cujas chaves sao primeiroNome e ultimoNome.
4.2. Heranca
Os defensores de linguagens orientadas a objetos dizem que Perl nao e orientado a objetos, mas Perl alem de suportar orientaca o a objetos, suporta heranca multipla, algo que
liguagens como o Java nao suporta. Em Perl, a heranca (simples ou multipla) e implementada atraves do vetor @ISA. Como exemplo, sera criado um pacote Retangulo, com
o metodo desenhar e as chaves (atributos) altura e largura, e sera criado um pacote filho
Quadrado:
package R e t a n g u l o ;
sub new {
my $ t h i s = s h i f t ;
my $ c l a s s = r e f ( $ t h i s ) | | $ t h i s ;
my $ s e l f = {
a l t u r a => s h i f t ,
l a r g u r a => s h i f t
};
return b l e s s $self , $ c l a s s ;
}
sub d e s e n h a r {
my $ s e l f = s h i f t ;
f o r e a c h ( 1 . . $ s e l f >{ a l t u r a } ) {
f o r e a c h ( 1 . . $ s e l f >{ l a r g u r a } ) {
print () ;
}
p r i n t \n ;
}
}
package Quadrado ;
@ISA = qw / R e t a n g u l o / ;
sub new {
my $ t h i s = s h i f t ;
my $ c l a s s = r e f ( $ t h i s ) | | $ t h i s ;
my $ l a d o = s h i f t ;
my $ s e l f = new R e t a n g u l o ( $ l a d o , $ l a d o ) ;
return b l e s s $self , $ c l a s s ;
}

A linguagem Perl evolui a ela mesma, e essa forma de programar OO em Perl


ja esta muito ultrapassada. Hoje existem inumeros modulos que permitem um total
aproveitamento da Orientaca o a Objetos em Perl, de maneira profissional e extremamente
produtiva e que requer poucos conhecimentos da linguagem em si, o u nico pre-requisito
real e o conhecimento da lngua inglesa para leitura dos manuais. O mais famoso e o
Moose.

5. Conclusao
Apresentar todos os recursos do Perl em um artigo curto como este e , no mnimo, complicado. Nao e possvel detalhar todas as variaco es de uso das funco es da lingaugem. No
entanto, o este artigo lhe fornece informaco es suficientes a respeito da linguagem. Perl
possui amplo suporte a` escrita em dispositivos (arquivos, named pipes e sockets) mas o
uso desses recursos demandariam de estudos a` parte.
Perl e uma linguagem extensamente testada - a instalaca o da linguagem e acompanhada de 120000 testes funcionais, desenvolvidos ao longo de varios anos. Esta confiabilidade e muito importante no ambiente corporativo. Perl e uma das linguagens preferidas por administradores de sistema, aplicaco es para a web, financas (Bancos e Governo) e bioinformatica (Projeto Genoma). E especialmente versatil no processamento
e manipulaca o de texto, alem de permitir tempos de desenvolvimento curtos.
A tendencia da linguagem e que cresca o numero de projetos com muitos desenvolvedores, como e o caso do Catalyst e do proprio desenvolvimento do Perl 6. Para isso,
tem sido colocadas a disposica o da comunidade ferramentas de colaboraca o cada vez mais
sofisticadas. Tambem tem ocorrido bastante integraca o da comunidade Perl com projetos
de multiplas linguagens, como as bibliotecas PCRE, YAML, e com a implementaca o de
Python, Ruby, Tcl e outras linguagens na maquina virtual do Perl 6. Existe ainda um
projeto visando expandir o CPAN para abrigar modulos desenvolvidos para os mais diversos ambientes de programaca o. Dentro da propria linguagem Perl, o projeto principal
e a finalizaca o da versao 5.10, que traz diversas novidades do Perl 6 para dentro de um
ambiente muito estavel e compatvel com todo software ja existente.

6. Referencias
LUIZ EDUARDO BORGES. Phyton para Desenvolvedores 2a edica o.
Programaca o
Orientada
a
Objeto.
Disponvel
http://www.python.org.br/wiki/ProgramacaoOrientadaObjetoPython.
Acesso
10/09/2013.

em:
em:

LUTZ, Mark. ASCHER, David. Learning Python. United States of America.O


Reilly Network, 2003. KIUSALAAS, Jaan. Numerical Methods In Engineering With
Python. New York. Cambridge University Press, 2005.
GUIDO VAN ROSSUM, FRED L. DRAKE. Tutorial Python Release 2.4.2.