perl raquel c. de melo minardi raquelcm@dcc.ufmg.br curso de verÃo em bioinformÁtica estrutural

Post on 18-Apr-2015

108 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

PERL

Raquel C. de Melo Minardi

raquelcm@dcc.ufmg.br

CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL

Primeiro programa em perl

Abra um editor de texto e escreva o programa

A primeira linha deveria ser$!/usr/bin/perlpara 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 exemploprint “Este é meu primeiro programa em perl.”;

Salve com a extensão .pl

Dê permissão de execuçãochmod +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 linhause 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 = 134;$a = -2004;$a = 56.79;$a – 56.78989;$a = 13e34;$a = -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

Raquel C. de Melo Minardi 11/88

Operador Operação

+ Adição

- Subtração

* Multiplicação

/ Divisão

** Exponenciação

% Módulo

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 12/88

Operador Abreviação

$k = $k + 2 $k += 2

$k = $k - 2 $k -= 2

$k = $k * 2 $k *= 2

$k = $k / 2 $k /= 2

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 escalar contém um valor 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

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 leituraopen (OF, “>$nomeArquivoSaida”): abertura para escritaopen (OF, “>>$nomeArquivoSaida”): abertura para escrita

Fechar após o usoclose(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:

Raquel C. de Melo Minardi 53/88

Operador Números Strings

Igualdade == eq

Desigual != ne

Menor que < lt

Maior que > gt

Menor ou igual <= le

Maior ou igual >= ge

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

Raquel C. de Melo Minardi 61/88

Caracter Combina com O mesmo que

\d dígito [0-9]

\D Não-dígito [^0-9]

\w Caracter alfa-numérico

[a-zA-Z0-9_]

\W Caracter não alfa-numérico

[^a-zA-Z0-9_]

\s Espaços em branco [ \t\n\r\f]

\S Caracter não espaço

[^ \t\n\r\f]

CARACTERES ESPECIAIS

QUANTIFICADORES

Expressão regular

Raquel C. de Melo Minardi 62/88

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

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

Raquel C. de Melo Minardi 65/88

Para ignorar a diferença entre maiúsculas e minúsculas usa-se um “i” no final

Expressão regular

Raquel C. de Melo Minardi 66/88

Para casar pelo menos um entre vários padrões, separá-los com “|”

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

Possíveis formas de se inicializar um hash

Hash

Raquel C. de Melo Minardi 83/88

Hash

Raquel C. de Melo Minardi 84/88

Hash

Raquel C. de Melo Minardi 85/88

Acesso a posições de um hash através das chaves

Imprimindo todos os valores de um hash através das chaves

Hash

Raquel C. de Melo Minardi 86/88

Hash

Raquel C. de Melo Minardi 87/88

Hash

Raquel C. de Melo Minardi 88/88

top related