160 likes | 262 Views
Introdução à programaçao em PERL. http://www:activestate.com/Products/ActivePerl/. Levi Lúcio, Vasco Amaral, Programação em PERL, FCA-Editora de Informática. Objectivos. ler o texto de um ficheiro linha a linha, e escrever num ficheiro linha a linha. processar o texto:.
E N D
Introdução à programaçao em PERL http://www:activestate.com/Products/ActivePerl/ Levi Lúcio, Vasco Amaral, Programação em PERL, FCA-Editora de Informática
Objectivos • ler o texto de um ficheiro linha a linha, e escrever num ficheiro linha a linha. • processar o texto: tokenizer (quebrar o texto em palavras) contagem de palavras, frequências, ... bigramas, trigramas ... calcular similaridade entre palavras.
Estrutura do Programa 1 • Escreve: “Cómo te chamas?” • Lê o nome escrito pelo usuario • Escreve o nome que foi lido
Instruções do Programa 1 • print imprime texto (no terminal, num ficheiro...) • <STDIN>lê um conjunto de caracteres introduzidos pelo teclado no terminal. • $x=<STDIN>lê um conjunto de caracteres do teclado e os coloca na variável $x. • chop $xcorta o caracter de nova linha (\n) que se encontra no valor de $x.
Que é um programa? • Um programa é um conjunto de instruçoes (print, assignaçao, leitura, ...) • As instruçoes simples sao terminadas por ‘;’ (ponto e vírgula) • Quando corremos o programa, as instruçoes são executadas sequêncialmente.
Tipos de entidades de um programa • escalares: números, cadeias de caracteres • instruçoes: simples: print, =, chop...complexas: if, while... • Descritores Input/Output: STDIN, STDOUT, arquivos de entrada, arq. de saída... • listas • tabelas (hashes)
Tipos de variáveis • escalares: $var • listas: @var • tabelas: %var
Estrutura do tokenizer • Abre um ficheiro texto (.txt) • Lê linha a linha o texto • Escreve em um outro ficheiro as palavras do texto (cada palavra em uma linha)
Instruções do tokenizer • open (Arquivo, “< microcorpus.txt”)Abre um ficheiro para leitura. • while ($linha = <Arquivo>) { instrução1; instrução2; ... } Lê uma a uma as linhas do ficheiro, e cada linha é colocada na variável $linha. Após a leitura de uma linha, executa-se o bloco de instruções (entre chaves). Isto é repetido até chegar á última linha do ficheiro
Instruções do tokenizer • @pals = split (“ ”, $linha);Divide-se a cadeia $linha cada vez que aparece um espaço em branco. As sucessivas divisões são colocadas na lista @pals. • foreach $pal (@pals) { instrução1; instrução2... } Uma vez pegado em um elemento da lista @pals e colocado na variável $pal, executam-se as instruções do bloco. Isto é repetido com todos os elementos da lista.
Instruções iterativas foreach $var @lista { bloco } O bloco de instruções será executado um número de vezes correspondente ao número de elementos na lista, sendo que para cada iteração uma variável conterá o valor do elemento da lista. while (expressão) { bloco } O bloco será executado até que a expressão se torne falsa: while ($cont < 5) { print “$cont \n”; $cont++;}
A instrução IF if (expressão) { bloco do if }else { bloco do else }Se a expressão é verdade, executam-se as instruções contidas no bloco do if. Caso contrário, executa-se o bloco de instruções do else. Expressões falsas:1 > 2 ; 0 ; “”, 1-1 Expressões verdadeiras:1 < 2 ; os números excepto o 0; as strings excepto “”
Pattern-Matching • if ($line =~ /Maria/) { print $line;}Se a subcadeia “Maria” se encontra dentro da cadeia $line, então afichamos a cadeia $line. • $line =~ s/\,/ \,/;Se aparece o caracter “,” na cadeia $line, então substituimos esse caracter pelos dois caracteres “ ,” (i.e. introduzimos um espaço antes da vírgula).
Estrutura do “contagem.pl” • Abre um ficheiro com tokens • Lê linha a linha o ficheiro (cada linha é um token) : - conta as ocurrências de cada token, - conta as ocurrências da subcadeia “livr”,- conta as ocurrências de vírgulas e pontos. • Escreve em um ficheiro os resultados das contagens.
Instruções do contagem.pl while ($token = <Arquivo>) { $contar{$token}++;} Lê-se linha a linha o arquivo e construe-se uma tabela: %contar. Cada chave da tabela é um token. O valor para cada chave é o número de vezes que o token é lido: $contar{“livro”} = 2$contar{“Maria”} = 3$contar{“,”} = 8
Listas e Tabelas @notas = (“pedro”, 10, “maria”, 18) $notas[0] = “pedro”$notas[1] = 10$notas[2] = “maria”$notas[3] = 18 %notas = (“pedro” => 10, “maria” => 18) $notas{“pedro”} = 10$notas{“maria”} = 18