CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL
PERL
Raquel C. de Melo Minardi
[email protected]
Primeiro programa em perl

Abra um editor de texto e escreva o programa

A primeira linha deveria ser
$!/usr/bin/perl
para informar ao sistema que isto é um programa em perl e
para informar o caminho para o interpretador perl no sistema
Unix

Escreva o código, por exemplo
print “Este é meu primeiro programa em perl.”;

Salve com a extensão .pl

Dê permissão de execução
chmod +x programa.pl

Execute o programa chamando
./programa.pl ou perl programa.pl
Raquel C. de Melo Minardi
2/88
Primeiro programa em perl

Ao digitar
./programa.pl ou perl programa.pl
o programa será interpretado

Se há erros de sintaxe no código, o interpretador irá
informar e não executará o programa
Raquel C. de Melo Minardi
3/88
Primeiro programa em perl
Raquel C. de Melo Minardi
4/88
Primeiro programa em perl

A opção –w na linha
#!/usr/bin/perl
é uma condição de permissão de alertas (allow warnings) e
é muito útil na depuração do seu código

Comumente usa-se também a linha
use strict;
que indica que o interpretador irá checar os nomes das
variáveis para verificar se foram anteriormente declaradas
Raquel C. de Melo Minardi
5/88
Variáveis



Variáveis são nomes associados a posições de memória
que pode conter valores
Em perl, variáveis escalares podem conter números
(inteiros ou de ponto flutuante) ou cadeias de caracteres
(strings) e são identificadas por começarem com “$”
$a, $b e $resultado são exemplos de variáveis
Nomes de variáveis válidos começam com uma letra e a
seguir têm uma sequência de letras números e underscores
$a
$nome
$primeiro_nome
$ultimoNome
$bloco12
$c22e
Raquel C. de Melo Minardi
6/88
Estados de variáveis
Variáveis em perl têm três estados

exists: variável foi declarada mas não tem valor

defined: variável têm um valor que pode ser true ou false

true: variável tem valor diferente de 0 ou “”
Raquel C. de Melo Minardi
7/88
Literais e atribuições

Literais são valores constantes como 2, 5 e “palavra”,
por exemplo

Valores são atribuídos a variáveis através do símbolo “=”
$resultado = $a + $b;
$t = “palavra”;
Raquel C. de Melo Minardi
8/88
Números

Internamente, os números são sempre armazenados em
ponto flutuante mas há várias possíveis representações
$a
$a
$a
$a
$a
$a
= 134;
= -2004;
= 56.79;
– 56.78989;
= 13e34;
= -12E29;
NUNCA COMEÇE UM NÚMERO COM ZERO!
O NÚMERO SERÁ RECONHECIDO COMO UM NÚMERO EM OCTAL
Raquel C. de Melo Minardi
9/88
Caracteres especiais
Raquel C. de Melo Minardi
10/88
Operadores

Perl suporta as operações aritméticas básicas
Operador
Raquel C. de Melo Minardi
Operação
+
Adição
-
Subtração
*
Multiplicação
/
Divisão
**
Exponenciação
%
Módulo
11/88
Operadores

Parênteses podem ser usados para se indicar precedência
diferente da padrão

Existem abreviações para os operadores
Raquel C. de Melo Minardi
Operador
Abreviação
$k = $k + 2
$k += 2
$k = $k - 2
$k -= 2
$k = $k * 2
$k *= 2
$k = $k / 2
$k /= 2
12/88
Operadores
Raquel C. de Melo Minardi
13/88
Cadeias de caracteres (strings)

Strings são sequências de caracteres

Strings são delimitadas por aspas duplas

A string mais curta é “”

A string mais longa é tão comprida quanto a memória do
computador permitir
Raquel C. de Melo Minardi
14/88
Operadores para strings

A concatenação é a operação mais conhecida entre strings

O operador é o “.”

A função length é uma função predefinida que retorna o
comprimento de uma string
Raquel C. de Melo Minardi
15/88
Cadeias de caracteres
Raquel C. de Melo Minardi
16/88
Cadeias de caracteres
Raquel C. de Melo Minardi
17/88
Strings entre aspas

Certos caracteres quando precedidos de contrabarra entre
aspas duplas têm um siginifcado especial
\n → nova linha
\t → tabulação

Variáveis são interpolaladas quando dentro de aspas duplas

Se você quer usar “ como um literal dentro de uma string
entre aspas duplas, use \”
Raquel C. de Melo Minardi
18/88
Função split

A função split quebra uma string de acordo com a posição
de um conjunto de delimitadores

O delimitador é escrito entre barras: /PADRÃO/
Raquel C. de Melo Minardi
19/88
Função split
Raquel C. de Melo Minardi
20/88
Função split
Raquel C. de Melo Minardi
21/88
Função split
Raquel C. de Melo Minardi
22/88
Função split
Raquel C. de Melo Minardi
23/88
Função substr

A função substr extrai uma substring de uma string

Recebe três argumentos:
 uma string
 a posição inicial
 o número de caracteres a serem retornados a partir da
posição inicial
Raquel C. de Melo Minardi
24/88
Função substr
Raquel C. de Melo Minardi
25/88
Função substr
Raquel C. de Melo Minardi
26/88
Interpolação
Raquel C. de Melo Minardi
27/88
Interpolação
Raquel C. de Melo Minardi
28/88
Entrada pelo console

<STDIN> denota a entrada padrão

Durante a execução de um programa perl, toda vez que
<STDIN> é invocado, o programa para e espera que o
usuário digite uma sequência de caracteres seguida de
enter

<STDIN> conterá então a sequência lida e pode ser
atribuído a um escalar
Raquel C. de Melo Minardi
29/88
Entrada pelo console
Raquel C. de Melo Minardi
30/88
Impressão formatada

A função printf permite formatar a uma impressão
 Especificando o número de casas decimais de um
número
 Estabelecendo uma estrutura tabular através da
inclusão de espaços e tabulações
printf FILEHANDLE FORMATO, LISTA


FORMATO contém uma string de controle
LISTA contém a lista de variáveis que serão impressas segundos
os formatos estabelecidos
Raquel C. de Melo Minardi
31/88
Impressão formatada
Raquel C. de Melo Minardi
32/88
Impressão formatada
Raquel C. de Melo Minardi
33/88
Arranjos

Como visto, uma variável
numérico ou uma string

Um arranjo é uma estrutura de dados composta e pode ser
heterogênea
Ele contém uma lista de valores numéricos, ou uma lista de
strings ou uma mistura deles
A ordem é importante




escalar
contém
um
valor
Em perl, arranjos são definidos com um símbolo “@” antes
do nome
Portanto, em um mesmo programa podemos ter uma
variável escalar $var e um arranjo @var
Raquel C. de Melo Minardi
34/88
Arranjos
Raquel C. de Melo Minardi
35/88
Arranjos
Raquel C. de Melo Minardi
36/88
Arranjos

A função push adiciona um valor ao final de uma arranjo

A função shift recupera o primeiro valor de um arranjo

A função pop recupera o último valor de um arranjo
Raquel C. de Melo Minardi
37/88
Arranjos
Raquel C. de Melo Minardi
38/88
Arranjos
Raquel C. de Melo Minardi
39/88
Arranjos

A função pré-definida sort ordena elementos de uma
arranjo

$a<=>$b : para comparação entre números

cmp : para comparação entre strings



0 se são iguais
1 se $a>$b
-1 se $b>$a
Raquel C. de Melo Minardi
40/88
Arranjos
Raquel C. de Melo Minardi
41/88
Arquivos

A conexão entre um programa perl e arquivos de entrada e
saída são os filehandles

Diferentemente das variáveis, filehandles não tem um
prefixo definido mas são normalmente escritos com letras
maiúsculas

Antes de se utilizar um filehandle, ele deve ser aberto:
open (IF, $nomeArquivoEntrada): abertura para leitura
open (OF, “>$nomeArquivoSaida”): abertura para escrita
open (OF, “>>$nomeArquivoSaida”): abertura para escrita

Fechar após o uso
close(IF)
Raquel C. de Melo Minardi
42/88
Arquivos

É recomendado testar sempre se a abertura do arquivo foi
realizada com sucesso e usar a função die para encerrar o
programa caso algum problema tenha ocorrido
open (IF, $nomeArquivoEntrada)
or die (“Não foi possível abrir o arquivo”);
Raquel C. de Melo Minardi
43/88
Arquivos
Raquel C. de Melo Minardi
44/88
Arquivos
Raquel C. de Melo Minardi
45/88
Arquivos
Raquel C. de Melo Minardi
46/88
Arquivos
Raquel C. de Melo Minardi
47/88
Arquivos
Raquel C. de Melo Minardi
48/88
Arquivos
Raquel C. de Melo Minardi
49/88
Estruturas de controle

Estruturas de controle são aquelas que podem alterar o
fluxo de execução do programa

Há basicamente dois mecanismos:


Estruturas condicionais
Estruturas de repetição
Raquel C. de Melo Minardi
50/88
Estrutura condicional
Raquel C. de Melo Minardi
51/88
Estrutura condicional
Raquel C. de Melo Minardi
52/88
Estruturas de controle

Os principais operadores a serem utilizados nas expressões
são:
Operador
Números
Strings
Igualdade
==
eq
Desigual
!=
ne
Menor que
<
lt
Maior que
>
gt
Menor ou igual
<=
le
Maior ou igual
>=
ge
Raquel C. de Melo Minardi
53/88
Estrutura condicional
Raquel C. de Melo Minardi
54/88
Estrutura de repetição
Raquel C. de Melo Minardi
55/88
Estrutura de repetição
Raquel C. de Melo Minardi
56/88
Estrutura de repetição
Raquel C. de Melo Minardi
57/88
Estrutura de repetição
Raquel C. de Melo Minardi
58/88
Expressões regulares

Expressões regulares são mecanismos que permitem ao
programa ler um texto e identificar padrões no mesmo
Raquel C. de Melo Minardi
59/88
Expressão regular
Raquel C. de Melo Minardi
60/88
Expressão regular
CARACTERES ESPECIAIS
Caracter
Combina com
O mesmo que
\d
dígito
[0-9]
\D
Não-dígito
[^0-9]
\w
Caracter alfanumérico
[a-zA-Z0-9_]
\W
Caracter não alfanumérico
[^a-zA-Z0-9_]
\s
Espaços em branco
[ \t\n\r\f]
\S
Caracter não
espaço
[^ \t\n\r\f]
Raquel C. de Melo Minardi
61/88
Expressão regular
QUANTIFICADORES
Quantificador
Significado
{n}
Ocorre exatamente n vezes
{n,m}
Ocorre pelo menos n e no máximo m vezes
{n,}
Ocorre pelo menos n vezes
*
Ocorre 0 ou mais vezes
+
Ocorre 1 ou mais vezes
?
Ocorre 0 ou 1 vez
Raquel C. de Melo Minardi
62/88
Expressões regulares

O “.” é um caracter especial que substitui qualquer caracter
Raquel C. de Melo Minardi
63/88
Expressão regular
Raquel C. de Melo Minardi
64/88
Expressão regular

Para ignorar a diferença entre maiúsculas e minúsculas usase um “i” no final
Raquel C. de Melo Minardi
65/88
Expressão regular

Para casar pelo menos um entre vários padrões, separá-los
com “|”
Raquel C. de Melo Minardi
66/88
Expressões regulares

Pode-se ainda ancorar um padrão no início ou fim de uma
string usando:


\^PADRÃO\ : início
\PADRÃO$\ : fim
Raquel C. de Melo Minardi
67/88
Expressão regular
Raquel C. de Melo Minardi
68/88
Expressão regular
Raquel C. de Melo Minardi
69/88
Expressão regular
Raquel C. de Melo Minardi
70/88
Expressões regulares

Quando usamos expressões regulares, perl tenta casar o
maior padrão possível (estratégia gulosa)

Para tentar casar o menor (estratégia preguiçosa), usar um
“?”
Raquel C. de Melo Minardi
71/88
Expressão regular
Raquel C. de Melo Minardi
72/88
Expressões regulares

Pode-se usar expressões regulares para substituir um
padrão em uma string
$string =~ s/PADRÃO/NOVA_STRING/
$string =~ s/PADRÃO/NOVA_STRING/i : case insensitive
$string =~ s/PADRÃO/NOVA_STRING/g : global
Raquel C. de Melo Minardi
73/88
Expressão regular
Raquel C. de Melo Minardi
74/88
Expressões regulares

Símbolos especiais como \, |, (, ), [, {, ^, $, *, +, ?, .
devem ser colocados após a barra
Raquel C. de Melo Minardi
75/88
Funções

Funções recebem um conjunto de parâmetros, realizam um
conjunto de operações e retornam um valor

Nomes de funções seguem as mesmas convenções dos
nomes de variáveis

Podem ser colocadas em qualquer lugar do programa

Variáveis podem ser declaradas com my no interior de
funções
Raquel C. de Melo Minardi
76/88
Funções
Raquel C. de Melo Minardi
77/88
Funções
Raquel C. de Melo Minardi
78/88
Funções
Raquel C. de Melo Minardi
79/88
Funções

Todas as variáveis de um programa podem ser vistas e
acessadas no interior das funções

Quando declaramos variáveis no interior de funções, elas
sobrescrevem as globais em seu interior
Raquel C. de Melo Minardi
80/88
Funções
Raquel C. de Melo Minardi
81/88
Hashes

Um hash é uma variável que armazena uma coleção de
pares (chave, valor), arranjados de tal forma que é possível
recuperar um valor a partir de sua chave

A ordem não é importante

Também chamados de arranjos associativos
Raquel C. de Melo Minardi
82/88
Hash

Possíveis formas de se inicializar um hash
Raquel C. de Melo Minardi
83/88
Hash
Raquel C. de Melo Minardi
84/88
Hash

Acesso a posições de um hash através das chaves
Raquel C. de Melo Minardi
85/88
Hash

Imprimindo todos os valores de um hash através das
chaves
Raquel C. de Melo Minardi
86/88
Hash
Raquel C. de Melo Minardi
87/88
Hash
Raquel C. de Melo Minardi
88/88
Download

PERL - Laboratório de Bioinformática e Sistemas