47
Mais sobre a linguagem Perl Assistente de ensino: Marcelo da Silva Reis 1 Professor: Fabio Kon 1 1 Instituto de Matem´ atica e Estat´ ıstica, Universidade de S˜ ao Paulo MAC0211 - Laborat´ orio de Programa¸c˜ ao I 18 de junho de 2009 1 / 39

Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Mais sobre a linguagem Perl

Assistente de ensino: Marcelo da Silva Reis1

Professor: Fabio Kon1

1Instituto de Matematica e Estatıstica, Universidade de Sao Paulo

MAC0211 - Laboratorio de Programacao I

18 de junho de 2009

1 / 39

Page 2: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Conteudo

“Previously on MAC211...”Revisao da aula anterior

SubrotinasSintaxe e exemplosExercıcio

Depurando codigos em PerlExemplos

CGI em PerlO que e CGI?Produzindo scripts CGIExemplos de aplicacoes+ Exercıcio

2 / 39

Page 3: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Perl em Bioinformatica

I dada a restricao de tempo, nao sera possıvel mostrar, nestaaula, aplicacoes de Bioinformatica que usam Perl... :-(

I todavia, seria possıvel apresentar um seminario nesse sentido,no segundo semestre

3 / 39

Page 4: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Conteudo

“Previously on MAC211...”Revisao da aula anterior

SubrotinasSintaxe e exemplosExercıcio

Depurando codigos em PerlExemplos

CGI em PerlO que e CGI?Produzindo scripts CGIExemplos de aplicacoes+ Exercıcio

4 / 39

Page 5: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Caracterısticas e Aplicacoes

I Originalmente utilizada para processamento de textos

I Varias facilidades para processamento de texto estao“embutidas” na linguagem

I Hoje em dia tambem utilizada para muitas outras aplicacoes:

I administacao de sistemas

I bioinformatica

I aplicacoes web, etc.

I Desenvolvida para ser pratica (facil de usar, eficiente,completa), ao inves de “bela” (elegante, minimal) 1

1fonte: CPAN.org.5 / 39

Page 6: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Tipos de dados

Os cinco tipos de dados fundamentais em Perl sao:

I escalares: podem ser numeros, strings ou referencias

I array: uma lista ordenada de escalares

I hash: um mapeamento de strings para escalares

I manipulador de arquivo: um mapeamento para um arquivoou dispositivo

I subrotina: um mapeamento para uma subrotina Uma

subrotina declarada e considerada variavel, pois ela pode serredefinida (embora fazer isso nao seja uma boa)

6 / 39

Page 7: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Exemplos

Exemplos de declaracoes, uma variavel de cada tipo:

my $foo; # um escalar, default "undef"

my @foo; # um array, default lista vazia

my %foo; # um hash, default hash vazio

sub foo { ... } # uma subrotina

# manipuladores de arquivos nao sao declarados:#open(FOO, ... ) # (uppercase opcional)

7 / 39

Page 8: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Uso de referencias

1. Uma referencia e um escalar que aponta para uma variavel deum tipo de dados qualquer

2. Ou seja, um escalar pode ser referencia para arrays e hashes

3. Arrays e hashes sao colecoes de escalares

4. Segue imediatamente que podemos utilizar arrays e hashescom seus elementos (escalares) sendo referencias para outrosarrays e hashes

8 / 39

Page 9: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Uso de referencias

1. Uma referencia e um escalar que aponta para uma variavel deum tipo de dados qualquer

2. Ou seja, um escalar pode ser referencia para arrays e hashes

3. Arrays e hashes sao colecoes de escalares

4. Segue imediatamente que podemos utilizar arrays e hashescom seus elementos (escalares) sendo referencias para outrosarrays e hashes

8 / 39

Page 10: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Uso de referencias

1. Uma referencia e um escalar que aponta para uma variavel deum tipo de dados qualquer

2. Ou seja, um escalar pode ser referencia para arrays e hashes

3. Arrays e hashes sao colecoes de escalares

4. Segue imediatamente que podemos utilizar arrays e hashescom seus elementos (escalares) sendo referencias para outrosarrays e hashes

8 / 39

Page 11: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Uso de referencias

1. Uma referencia e um escalar que aponta para uma variavel deum tipo de dados qualquer

2. Ou seja, um escalar pode ser referencia para arrays e hashes

3. Arrays e hashes sao colecoes de escalares

4. Segue imediatamente que podemos utilizar arrays e hashescom seus elementos (escalares) sendo referencias para outrosarrays e hashes

8 / 39

Page 12: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Exemplo (adaptado do CPAN) de hashes em um hash

my %var = (scalar => (

desc => "unico item",sigil => ’$’,),

array => (desc => "lista ordenada de itens",sigil => ’@’,),

hash => (desc => "pares de chave/item",sigil => ’%’,),

);

print "Escalares tem um $var{’scalar’}->{’sigil’}";

9 / 39

Page 13: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Outro exemplo

my @vetor = [42, 13, 7];

my %var = (array => @vetor,hash => (

desc => "key/value pairs",sigil => ’%’,

),);

print "Posicao 0 do vetor: $var{’array’}->[0]\n";

10 / 39

Page 14: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Manipulando arquivos

open(my IN, "<" , "input.txt" ) or die "Erro!";open(my OUT, ">" , "output.txt") or die "Erro!";open(my APP, ">>", "append.txt") or die "Erro!";

printf OUT "Escrevendo no arquivo output.txt\n";

while(<IN>){ print $_; printf APP $_; }

close(IN);close(OUT);close(APP);

(a documentacao do CPAN utiliza $foo para manipulac~ao)

11 / 39

Page 15: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Foreach

O loop foreach e amigavel para a manipulacao de listas e dehashes:

foreach (@meses) {print "Mes: $_\n";

}

print $numeros[$_] foreach 0 .. 2; # array com 3 elem.

foreach my $chave (keys %meses) {print "Mes: $meses{$chave}\n";

}

12 / 39

Page 16: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Expressoes regulares

Exemplo de matching e processamento de expressoes regulares:

$email =~ /([^@]+)@(.+)/;defined $2 and print "User: $1\nHost: $2\n";

As expressoes capturadas sao definidas pelos parenteses, sendoarmazenadas nas variaveis $1, $2, etc.

13 / 39

Page 17: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Conteudo

“Previously on MAC211...”Revisao da aula anterior

SubrotinasSintaxe e exemplosExercıcio

Depurando codigos em PerlExemplos

CGI em PerlO que e CGI?Produzindo scripts CGIExemplos de aplicacoes+ Exercıcio

14 / 39

Page 18: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Um exemplo simples de subrotina

sub logger {my $mensagem = $_[0];open my LOG, ">>", "meu.log" or die "Erro!";print $logfile $logmessage;

}

logger "Teste de subrotina";

I Como toda variavel em Perl, subrotinas podem ser declaradasem qualquer parte do codigo!

I Porem, e uma boa pratica declarar todas no inıcio ou no final

15 / 39

Page 19: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Um exemplo simples de subrotina

sub logger {my $mensagem = $_[0];open my LOG, ">>", "meu.log" or die "Erro!";print $logfile $logmessage;

}

logger "Teste de subrotina";

I Como toda variavel em Perl, subrotinas podem ser declaradasem qualquer parte do codigo!

I Porem, e uma boa pratica declarar todas no inıcio ou no final

15 / 39

Page 20: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Passando parametros

Um exemplo simples:

imprime_alunos (\@nome, \%idade, $numero_alunos);

No exemplo acima, os dois primeiros parametros sao passados porreferencia, enquanto o ultimo e passado por valor.

sub imprime_alunos {my ($nome, $age, $r) = @_;print "$nome->[$_] $age->{$nome->[$_]}" foreach 0..$r;

}

Os argumentos da subrotina sao armazenadas no array @ :

16 / 39

Page 21: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Devolvendo valores

sub teste {return (1, 2, 3);

}

Em alguns casos, no final da subrotina, pode-se omitir o return:

sub lista {my $gamiarra = shift; # shift @_;if ($gambiarra){return (1 => "foo", 2 => "bar");

}undef; # mesma coisa que "return undef"

}

my $verifica_gambiarra = lista($variavel);

17 / 39

Page 22: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

ExercıcioElabore uma subrotina em Perl que receba uma lista de nomes,dois hashes de notas de provas (cujas chaves sao os nomes dalista) e devolva um hash com a media aritmetica, tambemmapeado pelos nomes. Ferramentas:

$c = $a / $b;$ref_hash = \%hash;

sub minha_subrotina{my ($x, $y, $z) = @_;...return $resultado;

}

foreach my $chave (keys %hash){ ... $hash{$chave} ... }foreach (@array){ ... $_ # elem. de @array ... }

18 / 39

Page 23: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Conteudo

“Previously on MAC211...”Revisao da aula anterior

SubrotinasSintaxe e exemplosExercıcio

Depurando codigos em PerlExemplos

CGI em PerlO que e CGI?Produzindo scripts CGIExemplos de aplicacoes+ Exercıcio

19 / 39

Page 24: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Corrigindo programas em Perl

I Antes de tudo, muitos problemas sao evitados utilizando aflag -w quando se executa um codigo Perl

I Utilizar o use warnings; tem o mesmo efeito

I O use strict; tambem e util para prevenir erros

I Executar perl -c meu codigo.pl verifica sintaxe e typos

I Feito isso, e comum corrigir codigo Perl utilizando o“comentar e imprimir”

I Se os passos acima nao resolvem, podemos utilizar odepurador Perl

20 / 39

Page 25: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Corrigindo programas em Perl

I Antes de tudo, muitos problemas sao evitados utilizando aflag -w quando se executa um codigo Perl

I Utilizar o use warnings; tem o mesmo efeito

I O use strict; tambem e util para prevenir erros

I Executar perl -c meu codigo.pl verifica sintaxe e typos

I Feito isso, e comum corrigir codigo Perl utilizando o“comentar e imprimir”

I Se os passos acima nao resolvem, podemos utilizar odepurador Perl

20 / 39

Page 26: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Corrigindo programas em Perl

I Antes de tudo, muitos problemas sao evitados utilizando aflag -w quando se executa um codigo Perl

I Utilizar o use warnings; tem o mesmo efeito

I O use strict; tambem e util para prevenir erros

I Executar perl -c meu codigo.pl verifica sintaxe e typos

I Feito isso, e comum corrigir codigo Perl utilizando o“comentar e imprimir”

I Se os passos acima nao resolvem, podemos utilizar odepurador Perl

20 / 39

Page 27: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Iniciando o depurador Perl

I Para iniciar o depurador Perl, basta digitarmos na linha decomando:

bash$ perl -d programa_bixado.pl

I Alternativamente, podemos modificar a primeira linha docodigo:

#!/usr/bin/perl -d

21 / 39

Page 28: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Alguns comandos basicos do depurador

I h : exibe uma tela de ajuda (h h para ajuda detalhada)

I b n : define um breakpoint na linha n (ex: b 42)

I p var : imprime o estado de uma variavel (ex: p $pe)

I r : inicia a execucao (R para reiniciar uma)

I q : sai do depurador

22 / 39

Page 29: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Exemplo

Agora vamos ver um exemplo simples de depuracao de codigo Perl.

23 / 39

Page 30: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Conteudo

“Previously on MAC211...”Revisao da aula anterior

SubrotinasSintaxe e exemplosExercıcio

Depurando codigos em PerlExemplos

CGI em PerlO que e CGI?Produzindo scripts CGIExemplos de aplicacoes+ Exercıcio

24 / 39

Page 31: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

O que e CGI?

I Common Gateway Interface

I protocolo para chamar aplicacoes remotas atraves de umservidor web

I Ta, mas e qual a utilidade disso?

I permite disponibilizar recursos dinamicos na web;

I ao contrario de recursos estaticos (ex: paginas HTML), osdinamicos contem informacoes que podem mudar a cadasolicitacao

I Perl e, de longe, a linguagem mais utilizada em scripts CGI

25 / 39

Page 32: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

O que e CGI?

I Common Gateway Interface

I protocolo para chamar aplicacoes remotas atraves de umservidor web

I Ta, mas e qual a utilidade disso?

I permite disponibilizar recursos dinamicos na web;

I ao contrario de recursos estaticos (ex: paginas HTML), osdinamicos contem informacoes que podem mudar a cadasolicitacao

I Perl e, de longe, a linguagem mais utilizada em scripts CGI

25 / 39

Page 33: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

O que e CGI?

I Common Gateway Interface

I protocolo para chamar aplicacoes remotas atraves de umservidor web

I Ta, mas e qual a utilidade disso?

I permite disponibilizar recursos dinamicos na web;

I ao contrario de recursos estaticos (ex: paginas HTML), osdinamicos contem informacoes que podem mudar a cadasolicitacao

I Perl e, de longe, a linguagem mais utilizada em scripts CGI

25 / 39

Page 34: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Uma chamada de um script CGI

26 / 39

Page 35: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Roteiro de execucao de CGI / Perl

1. Seu navegador solicita a uma servidora web a execucao de umscript CGI, com ou sem parametros. Exemplo:

http://www.usp.br/cgi-bin/foo.pl?p1=bar&p2=baz

2. A servidora web recebe a solicitacao, executa o programa Perlcom os parametros (se houverem)

3. O programa Perl e processado com os parametros recebidos edevolve ao Apache um resultado (normalmente uma paginaHTML)

4. A servidora web devolve ao computador que fez a solicitacao oresultado produzido pelo programa Perl

27 / 39

Page 36: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Servidora HTTP Apache

I servidora web de codigo aberto e livre

I uma dos componentes do solution stack LAMP 2

LAMP: Linux, Apache, MySQL, Perl

2http://www.think-lamp.com/28 / 39

Page 37: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Mensagens HTTP

I Metodos :

I GET: sem conteudo no corpo na mensagem HTTP(o Apache passa os parametros para o CGI atraves da URL)

I POST: com conteudo no corpo da mensagem, em formato destring(o Apache passa os parametros utilizando o STDIN)

I Cabecalho:

I Content-type: text/html, application/pdf, etc.

I Host: nome do host solicitante

29 / 39

Page 38: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Exemplos

Solicitacao:

GET /cgi-bin/hello.pl HTTP/1.1Host: localhost

Resposta:

HTTP/1.1 200 OKContent-Type: text/htmlContent-Length: 70<HTML><HEAD><TITLE>Hello, world!</TITLE><BODY><P>Hello, World!</BODY></HTML>

30 / 39

Page 39: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

“Hello, world!” em CGI / Perl

#!/usr/bin/perl -w

use strict;

print "Content-type: text/html\n\n";

print<<END_OF_PAGE;<HTML><HEAD><TITLE>Hello, world!</TITLE><BODY><P>Hello, World!</BODY></HTML>END_OF_PAGE

31 / 39

Page 40: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

O ambiente de um programa CGI

I Permissoes de scripts: normalmente eles tem as mesmaspermissoes que o servidor web

I Por razoes de seguranca, esses scripts devem ser capazes de lere de escrever apenas em areas de seu domınio

I o E/S e feito principalmente atraves dos ponteiros STDIN,STDOUT e STDERR

I informacoes adicionais sao coletadas atraves de variaveis deambiente (em %ENV)

32 / 39

Page 41: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Ponteiros de arquivos em CGI / Perl

I STDIN: o programa le os parametros do metodo POSTatraves dele (nunca o leia quando o metodo for GET, poispode “matar” a execucao)

I STDOUT: o programa escreve a resposta ao Apache nesteponteiro

I STDERR: quando ocorre um erro, o Apache pode anexar amensagem em STDERR a resposta a ser enviada ao cliente

33 / 39

Page 42: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Algumas variaveis de ambiente

CONTENT_LENGHT o comprimento dos dados (em bytes)enviados em STDIN

QUERY_STRING as informacoes na URL que estaoapos o "?"

REQUEST_METHOD o metodo utilizado na solicitacao(POST, GET, etc)

Exemplo de uso:

if ($ENV{REQUEST_METHOD} eq "GET"){$mensagem = $ENV{QUERY_STRING};

}

34 / 39

Page 43: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

CGI.pm

I modulo Perl para programacao de scripts CGI

I fornece uma boa API para manipular os dados de entrada e desaıda (HTML ou XHTML)

I duas opcoes de interface: procedural e orientada a objetos

I pagina do CGI.pm:http://stein.cshl.org/WWW/software/CGI/

35 / 39

Page 44: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Exemplos de aplicacoes

Agora vamos ver alguns exemplos de aplicacoes.

36 / 39

Page 45: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

+ Exercıcio (para fazer em casa)

I instale a servidora Apache em seu computador;

I de uma olhada se o daemon e executado, (ps -ef | grepapache2)

I leia o arquivo de configuracao (geralmente algo como/etc/apache2/apache2.conf)

I verifique os caminhos dos diretorios www e cgi-bin, assimcomo se chamadas ao localhost em seu computadorfuncionam corretamente

37 / 39

Page 46: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

+ Exercıcio (continuacao)

I crie um arquivo TXT, com cada linha contendo um nome dealuno e 2 numeros (notas)

I faca um HTML com uma caixa de texto (para escrever umnome ou parte dele) e um botao de submissao

I por fim, escreva um script CGI em Perl que receba asolicitacao do HTML do ıtem acima e imprima uma tabelaHTML que contenha o nome, notas e media de todos osalunos cujo nome case com a expressao fornecida.

38 / 39

Page 47: Mais sobre a linguagem Perlkon/MAC211/2009/Perl/Aula27.pdf · Perl em Bioinform atica I dada a restri˘c~ao de tempo, n~ao ser a poss vel mostrar, nesta aula, aplica˘c~oes de Bioinform

Referencias

1. Perl.org. http://www.perl.org/.Acesso em 10 de junho de 2009.

2. Comprehensive Perl Archive Network.http://www.cpan.org/.Acesso em 16 de junho de 2009.

3. Livros da O’Reilly:

I Learning Perl.

I Programming Perl.

I CGI Programming with Perl, Second Edition

4. Verbete “Foo bar” na Wikipedia.http://en.wikipedia.org/wiki/Foo_bar/.Acesso em 17 de junho de 2009.

39 / 39