instituto de matemática e estatística | ime-usp - introdu˘c~ao a …kon/mac211/aula25.pdf ·...

46
Introdu¸c˜ ao ` 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 10 de junho de 2010 1 / 33

Upload: others

Post on 05-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Introducao 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

10 de junho de 2010

1 / 33

Page 2: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Conteudo (hoje):

Apresentacao de PerlOrigem da linguagem, principais caracterısticasExecutando programas em Perl

Tipos de variaveisEscalares, arrays e hashesUso de referenciasEscopo das variaveis

Loops e construcoes condicionaisFor, while, foreach, ...

Exercıcios

2 / 33

Page 3: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Para as proximas aulas:

I Expressoes regulares: matching, processamento, . . .

I Mais manipulacao de arrays

I E/S, manipulacao de arquivos

I Subrotinas

I Depurando codigos em Perl

I CGI/Perl

I Perl em Bioinformatica (se der tempo . . . )

3 / 33

Page 4: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Conteudo

Apresentacao de PerlOrigem da linguagem, principais caracterısticasExecutando programas em Perl

Tipos de variaveisEscalares, arrays e hashesUso de referenciasEscopo das variaveis

Loops e construcoes condicionaisFor, while, foreach, ...

Exercıcios

4 / 33

Page 5: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Resumo da historia da linguagem

I Linguagem criada por Larry Wall em 1987

I Desenvolvida para processamento de textos

I Practical extraction and report language

I Hoje em dia utilizada para muitas outras aplicacoes:

I administacao de sistemas

I bioinformatica

I aplicacoes web, etc.

5 / 33

Page 6: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Principais caracterısticas

I Algumas influencias: C, awk, Pascal, sed, Unix shell

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

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

I Atualmente na versao 5.12 (Perl 6 em desenvolvimento desde2000).

1fonte: CPAN.org.6 / 33

Page 7: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

”Hello, World!”

Nosso primeiro programa em Perl (hello-world.pl):

#!/usr/bin/perl -w

use strict;

my $mensagem = "Hello" . ", " . ’world!’;

print "$mensagem\n";

7 / 33

Page 8: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Executando programas em Perl

1. Utilizando diretamente o interpretador Perl:

bash$ perl -w hello-world.pl

2. Alterando as permissoes do arquivo .pl (o caminho dointerpretador e especificado na primeira linha do codigo):

#!/usr/bin/perl -w

8 / 33

Page 9: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Conteudo

Apresentacao de PerlOrigem da linguagem, principais caracterısticasExecutando programas em Perl

Tipos de variaveisEscalares, arrays e hashesUso de referenciasEscopo das variaveis

Loops e construcoes condicionaisFor, while, foreach, ...

Exercıcios

9 / 33

Page 10: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Tipos de variaveis

Os cinco tipos de variaveis 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 podeser redefinida

10 / 33

Page 11: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

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

Cada tipo de variavel (exceto subrotinas e arquivos) tem um sigildiferente.

11 / 33

Page 12: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Escalares

I Representam uma variavel simples

I Podem ser strings, numeros ou referencias

I Com o “use strict” precisam ser declarados antes do uso.Exemplos:

my $dia = 10;my $mes;my $pi_nao_tao_preciso = 3.14;$mes = "junho";

I “Castings” automaticos entre tipos. Exemplo:

print "Hoje, $dia/$mes, tem aula de MAC0211\n";

12 / 33

Page 13: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Escalares

I Representam uma variavel simples

I Podem ser strings, numeros ou referencias

I Com o “use strict” precisam ser declarados antes do uso.Exemplos:

my $dia = 10;my $mes;my $pi_nao_tao_preciso = 3.14;$mes = "junho";

I “Castings” automaticos entre tipos. Exemplo:

print "Hoje, $dia/$mes, tem aula de MAC0211\n";

12 / 33

Page 14: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Escalares

I Representam uma variavel simples

I Podem ser strings, numeros ou referencias

I Com o “use strict” precisam ser declarados antes do uso.Exemplos:

my $dia = 10;my $mes;my $pi_nao_tao_preciso = 3.14;$mes = "junho";

I “Castings” automaticos entre tipos. Exemplo:

print "Hoje, $dia/$mes, tem aula de MAC0211\n";

12 / 33

Page 15: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Arrays

Arrays em Perl sao tratados como uma lista de escalares.Exemplos:

my @meses = ("maio", $mes, "julho"); # $mes == "junho"

my @numeros = (13, 42, 3);

my @mistura = ("jan", 42, 3.14);

13 / 33

Page 16: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Mais sobre arrays

I Como em C, arrays comecam com ındice zero. Exemplo:

if ($dias[0] eq ’dom’){...

}

I “Modo escalar”:

if (@dias <= 7){ # == scalar(@dias)...

}

14 / 33

Page 17: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Mais sobre arrays

I Como em C, arrays comecam com ındice zero. Exemplo:

if ($dias[0] eq ’dom’){...

}

I “Modo escalar”:

if (@dias <= 7){ # == scalar(@dias)...

}

14 / 33

Page 18: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Mais um pouquinho sobre arrays

I Ordenando um array em ordem crescente (numerica oulexicografica):

my @numeros_ordenados = sort @numeros;my @meses_ordenados = sort @meses;

I Invertendo a ordem do array:

my @numeros_inv = reverse @numeros;

15 / 33

Page 19: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Mais um pouquinho sobre arrays

I Ordenando um array em ordem crescente (numerica oulexicografica):

my @numeros_ordenados = sort @numeros;my @meses_ordenados = sort @meses;

I Invertendo a ordem do array:

my @numeros_inv = reverse @numeros;

15 / 33

Page 20: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Hashes

I Em Perl, hashes sao uma colecao de escalares indexados porchaves (um unico elemento por chave). Exemplo:

my %meses = ("1", "jan", "2", "feb");

I Uma outra declaracao para o hash acima:

my %meses = (1 => "jan", 2 => "feb");

I Acessando um valor de um hash:

$meses{"1"}; # devolve "jan"

16 / 33

Page 21: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Hashes

I Em Perl, hashes sao uma colecao de escalares indexados porchaves (um unico elemento por chave). Exemplo:

my %meses = ("1", "jan", "2", "feb");

I Uma outra declaracao para o hash acima:

my %meses = (1 => "jan", 2 => "feb");

I Acessando um valor de um hash:

$meses{"1"}; # devolve "jan"

16 / 33

Page 22: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Hashes

I Em Perl, hashes sao uma colecao de escalares indexados porchaves (um unico elemento por chave). Exemplo:

my %meses = ("1", "jan", "2", "feb");

I Uma outra declaracao para o hash acima:

my %meses = (1 => "jan", 2 => "feb");

I Acessando um valor de um hash:

$meses{"1"}; # devolve "jan"

16 / 33

Page 23: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Alocacao dinamica de arrays e de hashes

I A alocacao de arrays e de hashes sempre e dinamica, mesmoquando inicializando a variavel com valores.

I O interpretador gerencia para a gente a alocacao dinamica damemoria! :-)

I Em um hash, chaves nao-inicializadas tem valor padraoundef:

my %meses = (1 => "jan", 2 => "feb");if(!defined( $meses{3} ) ){

$meses{3} = "mar";}

17 / 33

Page 24: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Alocacao dinamica de arrays e de hashes

I A alocacao de arrays e de hashes sempre e dinamica, mesmoquando inicializando a variavel com valores.

I O interpretador gerencia para a gente a alocacao dinamica damemoria! :-)

I Em um hash, chaves nao-inicializadas tem valor padraoundef:

my %meses = (1 => "jan", 2 => "feb");if(!defined( $meses{3} ) ){

$meses{3} = "mar";}

17 / 33

Page 25: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Alocacao dinamica de arrays e de hashes

I A alocacao de arrays e de hashes sempre e dinamica, mesmoquando inicializando a variavel com valores.

I O interpretador gerencia para a gente a alocacao dinamica damemoria! :-)

I Em um hash, chaves nao-inicializadas tem valor padraoundef:

my %meses = (1 => "jan", 2 => "feb");if(!defined( $meses{3} ) ){

$meses{3} = "mar";}

17 / 33

Page 26: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Uso de referencias

1. Uma referencia e um escalar que aponta para uma variavelqualquer

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

3. Arrays e hashes sao colecoes de escalares

4. Corolario: podemos utilizar arrays e hashes com seuselementos (escalares) sendo referencias para outros arrays ehashes

18 / 33

Page 27: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Uso de referencias

1. Uma referencia e um escalar que aponta para uma variavelqualquer

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

3. Arrays e hashes sao colecoes de escalares

4. Corolario: podemos utilizar arrays e hashes com seuselementos (escalares) sendo referencias para outros arrays ehashes

18 / 33

Page 28: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Uso de referencias

1. Uma referencia e um escalar que aponta para uma variavelqualquer

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

3. Arrays e hashes sao colecoes de escalares

4. Corolario: podemos utilizar arrays e hashes com seuselementos (escalares) sendo referencias para outros arrays ehashes

18 / 33

Page 29: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Uso de referencias

1. Uma referencia e um escalar que aponta para uma variavelqualquer

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

3. Arrays e hashes sao colecoes de escalares

4. Corolario: podemos utilizar arrays e hashes com seuselementos (escalares) sendo referencias para outros arrays ehashes

18 / 33

Page 30: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Exemplo de referencias

# Para refer\^encia utilizamos {} no lugar de ()#$hash = { desc => "um escalar", sigil => ’$’ };

print $hash->{"sigil"}; # imprime ’$’

# Para refer\^encia utilizamos [] no lugar de ()#$array = [ 1958, 1962, 1970, 1994, 2002, 2010 ];

print $array->[5]; # ser\’a?!

19 / 33

Page 31: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

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’}";

20 / 33

Page 32: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Outro exemplo

my @vetor = (42, "towel");

my %var = (array => [ @vetor ],hash => {

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

);

print "A Verdade: $var{’array’}->[0]\n";

21 / 33

Page 33: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Variaveis especiais

Perl tem varias variaveis especiais; algumas delas:

$_

@_

@ARGV

%ENV

$1, $2, $3, ...

22 / 33

Page 34: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Escopo das variaveis

I E possıvel declarar variaveis sem utilizar o my:

$pi = 3.14;

I Todavia, isso cria uma variavel global onde quer que a variavelseja declarada, o que e uma ma pratica de programacao.

I Solucao: utilizar o my (que cria variaveis locais, caso adeclaracao seja dentro de lacos e/ou de subrotinas).

Melhor ainda: utilizar o my em conjunto com o use strict

23 / 33

Page 35: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Escopo das variaveis

I E possıvel declarar variaveis sem utilizar o my:

$pi = 3.14;

I Todavia, isso cria uma variavel global onde quer que a variavelseja declarada, o que e uma ma pratica de programacao.

I Solucao: utilizar o my (que cria variaveis locais, caso adeclaracao seja dentro de lacos e/ou de subrotinas).

Melhor ainda: utilizar o my em conjunto com o use strict

23 / 33

Page 36: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Escopo das variaveis

I E possıvel declarar variaveis sem utilizar o my:

$pi = 3.14;

I Todavia, isso cria uma variavel global onde quer que a variavelseja declarada, o que e uma ma pratica de programacao.

I Solucao: utilizar o my (que cria variaveis locais, caso adeclaracao seja dentro de lacos e/ou de subrotinas).

Melhor ainda: utilizar o my em conjunto com o use strict

23 / 33

Page 37: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Conteudo

Apresentacao de PerlOrigem da linguagem, principais caracterısticasExecutando programas em Perl

Tipos de variaveisEscalares, arrays e hashesUso de referenciasEscopo das variaveis

Loops e construcoes condicionaisFor, while, foreach, ...

Exercıcios

24 / 33

Page 38: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

For e While

Sao muito parecidas com as suas equivalentes em C:

for (my $i = 0; $i <= 10; $i++){....

}

while( condicao ){....

}

do{....

}while( condicao );

25 / 33

Page 39: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Um exemplo interessante de while

while(<STDIN>){# captura em $_ uma linha da entrada padr\~ao# e dentro do loop pode ser realizado# algum processamento utilizando o $_

}

O comando chomp remove o caracter de fim de linha de umavariavel.

26 / 33

Page 40: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

If, then, else,...

Tambem e bem parecido com o de C:

if ( ( condicao_1 ) && ( condicao_2 ) ){....

}elsif ( ( condicao_3 ) || (condicao_4) ){

....}else{

....}

27 / 33

Page 41: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Condicionais

Em Perl e possıvel realizar construcoes condicionais que realizamacoes de acordo com a avaliacao do primeiro termo:

1 && 1 || 0 and print "1 == true! :-)";

## Se a funcao devolve 1, imprime "Encontrado!",# caso contrario imprime "Xii.."#busca($element) and print "Encontrado!" or print "Xii..";

28 / 33

Page 42: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Foreach

O loop foreach e muito mais amigavel para a manipulacao delistas e de hashes. Dois exemplos com listas:

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

}

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

29 / 33

Page 43: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Conteudo

Apresentacao de PerlOrigem da linguagem, principais caracterısticasExecutando programas em Perl

Tipos de variaveisEscalares, arrays e hashesUso de referenciasEscopo das variaveis

Loops e construcoes condicionaisFor, while, foreach, ...

Exercıcios

30 / 33

Page 44: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Exercıcio I (Learning Perl, 3.1)

Escreva um programa em Perl que leia da entrada padrao umalista de strings (uma palavra por linha) e, ao final do processo,imprima a lista em ordem reversa.

Dicas (sintaxes uteis):

while(<STDIN>){# captura em $_ uma linha da entrada padr\~ao

}

my @array = reverse @outro_array;$array[2] = "blabla";

chomp $_;

print "Imprimindo e " . $array[2] . "concatenando!\n";

31 / 33

Page 45: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Exercıcio II

Escreva um programa em Perl que leia da entrada padrao inteirospositivos e armazene-os em duas listas: uma para numeros menoresque 10 e outra para maiores. As duas listas devem ser acessadasatraves de um hash, usando as chaves “menores” e “maiores”.

Dicas (sintaxes uteis):

while(<STDIN>){# captura em $_ uma linha da entrada padr\~ao

}

1 < 0 and print "Zero > Um!" or print "Zero <= Um!";

my $hash = (um => [@array_1], dois => [("a", "b")]);

32 / 33

Page 46: Instituto de Matemática e Estatística | IME-USP - Introdu˘c~ao a …kon/MAC211/Aula25.pdf · 2010. 6. 18. · 2.Ou seja, um escalar pode ser refer^encia para arrays e hashes 3.Arrays

Referencias

1. Perl.org. http://www.perl.org/.Acesso em 9 de junho de 2010.

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

3. Livros da O’Reilly:

I Learning Perl.

I Programming Perl.

33 / 33