Practical Extraction and Report Language

Slides:



Advertisements
Apresentações semelhantes
Introdução ao Perl Apresentado por: Mário Silva
Advertisements

Python: Dicionários Claudio Esperança.
Programação em Java Prof. Maurício Braga
Programação em Java Prof. Maurício Braga
Estruturas de Controle
Estruturas de Repetição
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INTRODUÇÃO AOS APLICATIVOS JAVA Prof. Thiago Pereira Rique
Shell Script Professor: João Paulo
Universidade Federal de São Carlos Introdução à Linguagem C Comandos.
Introdução a Programação Renata Freire
Tecnologia para Web JavaScript
Instrutor: Nilo Menezes
Programação PERL Israel Tojal da Silva
Introdução ao JavaScript
Tópicos Tipos de Dados Variáveis por Valor Variáveis por Referência
O Portal do Estudante de Computação
O Portal do Estudante de Computação
Programação Web com PHP
Python Uma introdução Klaus Natorf Quelhas Novembro de 2009.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Ada.
O Portal do Estudante de Computação
Unidade I: “Dê um mergulho rápido”
Aula prática 6 Vetores e Matrizes
Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012.
PHP Tipos de dados Constantes.
Curso básico de PHP 1 Vantagens: Gratuito Multiplataforma Estável Rapidez Comunicação.
Linguagem de Programação II Parte IV
Linguagem de Programação II Parte VII
Linguagem de Programação I Parte III
FTIN Formação Técnica em Informática
CADEIA DE CARACTERES (Strings)
Entendendo as definições de classe
Introdução a aplicativos Java
Linguagem de Programação JAVA
Algoritmo e Programação
Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery.
PrograMação para internet
PROGRAMAÇÃO PARA INTERNET Prof.: Jean Carlo Mendes
Introdução à programaçao em PERL Levi Lúcio, Vasco Amaral, Programação em PERL, FCA-Editora de Informática.
Introdução a Perl Tema 3B Pablo Gamallo Otero
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Aula prática 7 Strings Monitoria de Introdução à Programação
Introdução à Linguagem C
Linguagem de Programação C#
Aula prática 2 Operadores e Expressões Comandos de Decisão Comentários
Usando Perl para a extracção automática de informação a partir de corpus bruto / cru Tema 4A Pablo Gamallo Otero
Ceça Moraes – Introdução à Programação SI1
Acabias Marques Luiz. I - Introdução ao Ruby Parte 1 – Introdução a linguagem  O que é Ruby  Instalação  O IRB  Operadores Aritméticos  Tipos de.
STRINGS Dilvan Moreira (baseado no livro Big Java e Z. Liang)
JAVA Sintaxe.
Ruby André Braga Patrícia Lustosa. Yukihiro Matsumoto (“Matz”), 1993 Perl Smalltalk Eiffel Ada Lisp “Natural, not simple” “More powerful than Perl and.
Fundamentos de linguagens de programação
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Acabias Marques Luiz. III – Variáveis, constantes e executáveis Parte 1 – Introdução a linguagem  Variáveis e Constantes  Atalhos na manipulação de.
 2000 Prentice Hall, Inc. All rights reserved. 1 Capítulo 8 - Caracteres e Strings Sumário 8.1Introdução 8.2Conceitos Fundamentais de Strings e Caracteres.
Programação de Computadores - 1
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Profa. Maria Augusta Constante Puget
JAVASCRIPT Programação Web. O que é  E uma linguagem interpretada que e executada na maquina do cliente  Não esta associada ao framework java  Não.
Shell Script Parte 2.
Profa. Maria Augusta Constante Puget
11 Revisão da Linguagem C Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
Arrays Outline 7.1 Introdução 7.2 Arrays 7.3 Declarando e Criando Arrays 7.4 Exemplos usando arrays 7.5 Ordenando arrays 7.6 Procurando em.
Módulo I Capítulo 7: Funções e Procedimentos William Ivanski Curso de Programação C#
PCI- Vetores Profa. Mercedes Gonzales Márquez. Aula 5 - VetoresAlgoritmos e Estruturas de Dados I Sequência de valores todos do mesmo tipo Nome único.
Java Básico Lab Ruddá Beltrão | Cristian Costa.
Corpus lingüísticos: proceso de elaboración e extracción automática de información María Paula Santalla del Río Pablo Gamallo Otero Elaboración do material.
1 Estruturas Condicionais Aula – Tópico 3 Algoritmos e Estruturas de Dados I (DCC/003)
IF E ITERAÇÃO WHILE Dilvan Moreira (baseado no livro Big Java e T. Munzner)
Transcrição da apresentação:

Practical Extraction and Report Language PERL Practical Extraction and Report Language

Um Pouco Sobre Perl Perl é uma linguagem poderosa e adaptável a diversas situações. Sua primeira versão foi desenvolvida por Larry Wall, um linguista que trabalhava para a NASA na década de 80 como administrador de sistemas. Era utilizada para facilitar o processamento de relatórios.

Um Pouco Sobre Perl É uma linguagem criada para processar e manipular textos. Nos dias atuais é utilizada na administração de sistemas, como interface para permitir a comunicação entre sistemas diferentes, na programação para a web, em bioinformática, ou mesmo em desenvolvimento de aplicativos.

Um Pouco Sobre Perl Na programação para web, Perl é muito utilizada e popular por suas características de manipulação de texto e rápido desenvolvimento, tanto que chega a ser conhecida como a “super fita crepe” da internet. A interface de integração de banco de dados de Perl suporta diversos bancos de dados como Oracle, Sybase, Postgres e MySQL.

Um Pouco Sobre Perl Perl é capaz de fazer o interfaceamento através de bibliotecas C/C++ externas através de XS ou SWIG. Perl pode trabalhar com HTML, XML e outras linguagens de marcação. Perl permite programação procedural ou orientada a objetos. Possui várias bibliotecas disponíveis através do CPAN.

Um Pouco Sobre Perl O slogan de Perl é: "Há mais de uma maneira de se fazer as coisas.“ ("There's more than one way to do it,") Princípio de Perl: “Coisas comuns devem ser simples e fáceis.“ (common things should be easy and simple.)

Algumas Aplicações de Perl TWiki - Sistema Wiki de escrita de conteúdo colaborativo. RT - Sistema de processamento de Tickets. Apache Spam Assassin - Sistema extensível de filtro de Spam em email . Dev::rip - Programa para cópias de DVD. AWStats - "Advanced Web Statistics" (AWStats) é um poderoso sistema de análise de logs de servidores Web e de geração de estatísticas.

Algumas Empresas que Usam Perl

Algumas Empresas que Usam Perl

Algumas Empresas que Usam Perl

Sintaxe e Código Strings: são apresentadas entre aspas, duplas ou simples. Exemplo: Programa Hello, World!: say “Hello, World!”;#exibe na tela a string Hello, World e #insere uma nova linha. Isto é equivalente a: say ‘Hello, World!’; #exibe na tela a string Hello, World e #insere uma nova linha.

Sintaxe e Código String entre aspas simples é considerada literalmente. String entre aspas duplas é interpretada. Exemplo: Print ‘Hello, \nWorld!’; #exibe Hello, World!\n na tela. Print “Hello, \nWorld!“; #exibe Hello, #World! na tela. Perl também usa \n, \t e \\ como C.

Sintaxe e Código Operadores Básicos Operadores de atribuição: ++, --, +=, -=, /= e *=. São os mesmos de C. Operadores de comparação: ==, != , <, >, <= e >=. São iguais aos de C. Operadores matemáticos: +-*/. São iguais aos de C. Operador my: declaração de variável. Exemplo: my $hour; Também poderia fazer: my $i = 15;

Sintaxe e Código Operadores Básicos Perl não tem muita flexibilidade com relação a operadores de string. O único operador básico de string é o de concatenação: . Exemplo: my $a = "8"; # Observe as aspas. $a é uma string. my $b = $a + "1"; # "1" é uma string também. my $c = $a . "1"; # Mas $b e $c têm valores #diferentes!

Sintaxe e Código Operadores Básicos O sinal + é usado para somar números, enquanto que o . é usado para concatenar strings. No exemplo anterior o valor de $b é 9, enquanto o valor de $c é 81. Perl faz a conversão de maneira transparente. Se forem somadas coisas que não são números, Perl fará o possível para convertê-las em números.

Sintaxe e Código Perl tem 3 tipos de variáveis: escalares, vetores e hashes. Escalares: podem ser números, letras ou strings. O nome de cada variável escalar começa com $. Exemplo: $nome = “Henrique”; $idade = 23; $letra = “s”; Não é necessário especificar para um escalar que está atribuída uma letra ou número, pois a conversão é automática.

Sintaxe e Código Guardando string em escalar: usando aspas duplas, pode-se colocar uma variável no meio da string que ela será interpretada. Exemplo: use feature ':5.10'; my $apple_count = 5; my $count_report = "There are $apple_count apples."; say "The report is: $count_report"; Na tela será exibido: The report is: There are 5 apples.

Sintaxe e Código Arrays: são conjuntos de escalares. Seus nomes começam com @. A lista é definida com parênteses. Exemplo: my @lotto_numbers = (1, 2, 3, 4, 5, 6); my @months = ("July", "August", "September"); O funcionamento de arrays em Perl é semelhante a C e outras linguagens. Exemplo: say $months[0]; # Isto imprime "July". $months[2] = "March"; # September foi renomeado para March

Sintaxe e Código Se um valor não existe, ele é criado na atribuição. Exemplo: my @winter_months = ("December", "January"); $winter_months[2] = "February"; Para saber o número de elementos em um array, basta atribuí-lo a um escalar: Exemplo: my @months = ("July", "August", "September"); my $month_count = @months; say $month_count; # This prints 3. my @autumn_months; # no elements my $autumn_count = @autumn_months; say $autumn_count; # this prints 0

Sintaxe e Código Hashes: são conjuntos de pares de dados nos quais um dos valores é uma chave e o outro é um valor qualquer. Cada chave é única em todo o conjunto. Exemplos: dicionário, mapa, etc. Os nomes das variáveis hash começam com %. Cada valor de hash é separado por vírgula. Exemplo: my %days_in_month = ( "July" => 31, "August" => 31, "September" => 30 );

Sintaxe e Código Para obter ou modificar um valor de hash deve-se referenciá-lo assim: $hashname{key}. Exemplo: say $days_in_month{September}; #imprime 30 na tela $days_in_month{February} = 29;

Sintaxe e Código Para saber quais chaves estão no hash, usa-se a função keys, que retorna uma lista (array) das chaves no hash. Exemplo: my @month_list = keys %days_in_summer; # O conteúdo de @month_list é ('July', 'September', 'August').

Sintaxe e Código Os valores do hash não são sempre retornados na mesma ordem. Os valores de um array são sempre retornados na mesma ordem.

Sintaxe e Código Condicionais Perl possui dois operadores condicionais: if e unless. if: Executa o bloco seguinte se a condição for verdadeira. Funciona igual a C. unless: só executa o bloco seguinte se a condição testada for falsa, isto é retorna verdadeiro somente se a condição testada for falsa.

Sintaxe e Código Condicionais Exemplo: if ($year_according_to_computer == 1900) { say "Y2K has doomed us all! Everyone to the compound."; } unless ($bank_account > 0) { say "I'm broke!";

Sintaxe e Código Condicionais Tanto o if quanto o unless podem ser seguidos por else. O if também pode ser seguido por elsif e depois por else. Exemplo: if ($a == 5) { say "It's five!"; } elsif ($a == 6) { say "It's six!"; } else { say "It's something else."; }

Sintaxe e Código Condicionais unless ($pie eq 'apple') { say "Ew, I don't like $pie flavored pie."; } else { say "Apple! My favorite!"; } Perl faz uso de condições pós-fixadas, isto é condições de uma linha, que apresentam primeiro o que será executado e depois a condição. Exemplo: say "I'm leaving work early!" if $day eq 'Friday'; say "I'm burning the 7 pm oil" unless $day eq 'Friday';

Sintaxe e Código Laços de Repetição for: é semelhante a outras linguagens. Pode-se especificar os valores da sequência, um intervalo ou um array ou hash. Exemplo: for my $i (1, 2, 3, 4, 5) { say $i; }

Sintaxe e Código Laços de Repetição my @one_to_ten = (1 .. 10); my $top_limit = 25; for my $i (@one_to_ten, 15, 20 .. $top_limit) { say $i; } for my $i (keys %month_has) { say "$i has $month_has{$i} days."; for my $marx ('Groucho', 'Harpo', 'Zeppo', 'Karl') { say "$marx is my favorite Marx brother.";

Sintaxe e Código Laços de Repetição while: é igual a C, repete o bloco seguinte enquanto a condição é verdadeira, parando quando a condição for falsa. Exemplo: my $count = 0; while ($count != 3) { $count++; say "Counting up to $count..."; }

Sintaxe e Código Laços de Repetição until: é semelhante a Pascal, repete o bloco seguinte enquanto a condição é falsa, parando quando a condição for verdadeira. Exemplo: my $count = 0; until ($count == 0) { $count--; say "Counting down to $count..."; }

Sintaxe e Código Sub Sub é o equivalente de Perl para o que em outras linguagens é uma função. Funciona assim: sub <nome da sub> { <corpo da sub> return <valor a ser retornado> } O uso do return não é obrigatório. Neste caso, o valor retornado é o resultado da última sentença antes do fim da sub.

Sintaxe e Código Sub O array @_ é usado para guardar os valores que são passados como parâmetros para a sub. Através do @_ os valores passados como parâmetros são lidos e manipulados dentro da sub. Exemplo: sub multiply { my (@ops) = @_; return $ops[0] * $ops[1]; } for my $i (1 .. 10) { say "$i squared is ", multiply($i, $i);

Sintaxe e Código Sub Ao usar uma variável com o my dentro de uma sub, a variável é considerada variável local. É possível atribuir valor a várias variáveis em uma única sentença. Exemplo: sub multiply { my ($left, $right) = @_; return $left * $right; }

Expressões Regulares Expressões regulares ou regex são o que Perl tem de melhor. São as ferramentas mais poderosas que Perl tem no tratamento de strings. São tão poderosas e complexas que é possível escrever um livro inteiro sobre elas. É difícil encontrar outras linguagens que usam expressões regulares como Perl.

Expressões Regulares Ocorrência simples de expressão: são as expressões regulares mais simples. Encontram uma ocorrência de string dentro de outra, não importa a posição, retornando verdadeiro. São usadas com expressões condicionais. O operador =~ é usado na verificação de strings com esse operador.

Expressões Regulares Exemplo: my $user_location = "I see thirteen black cats under a ladder."; say "Eek, bad luck!" if $user_location =~ /thirteen/; A string a ser buscada fica entre barras /<string>/. Metacaracters: São caracteres ou sequências de caracteres que têm um significado especial.

Expressões Regulares O \n é um exemplo de metacaracter. Os metacaracteres mais simples são o ^e o $. ^indica início de string. $ indica fim de string.

Expressões Regulares Exemplo: for my $line (<$urllist>) { print $line if $line =~ /^http:/ and $line =~ /html$/; # Se a linha começa em http: e termina em html, imprime } Coringas: são metacaracters que substituem outros caracteres. O mais genérico deles é o ponto .

Expressões Regulares Dentro de uma expressão, ele encontra qualquer outro caracter exceto o de nova linha. Exemplo: /Mr./ encontra qualquer expressão que comece com Mr e tenha outros caracteres depois.

Expressões Regulares Quantificadores de coringas: Indicam quantas vezes determinado caracter ou subespressão ocorre em uma string. Os quantificadores usados em Perl são:+, ?, *. +: encontra qualquer expressão que contenha uma ou mais ocorrências do caracter ou metacaracter anterior a ele. Exemplo: /ab+c/ retorna abc, abbc, abbbc, etc.

Expressões Regulares *: encontra qualquer expressão que contenha nenhuma ou mais ocorrências do caracter ou metacaracter anterior a ele. Exemplo: /ab*c/ retorna ac, abc, abbc, abbbc, etc. ?: encontra qualquer expressão que contenha nenhuma ou uma ocorrência do caracter ou metacaracter anterior a ele. Exemplo: /ab?c/ retorna ac, abc.

Expressões Regulares Classes de Caracteres: são metacaracteres que encontram tipos específicos de caracteres. Exemplos: \d: encontra um dígito simples. \w: encontra um caracter de palavra simples (palavras que tenham letra, dígito ou underscore). \s: encontra um caracter de espaço em branco (incluindo, \n \t e outros)

Expressões Regulares \D: encontra qualquer coisa que não seja dígito. \W: encontra qualquer coisa que não seja palavra. \S: encontra qualquer coisa que não seja caracter de espaço em branco. Exemplos de uso: /^\s+/ :encontra qualquer string que comece com caracter de espaço em branco.

Expressões Regulares /\w+/ : encontra qualquer string que contenha pelo menos uma palavra. say "Not a phone number!" unless $phone =~ /\d\d\d-\d\d\d\d/; say "Not a phone number!" unless $phone =~ /\d{3}-\d{4}/; #versão alternativa para facilitar a leitura do código. \d{3} : encontra exatamente 3 dígitos. \d{4} : encontra exatamente 4 dígitos.

Expressões Regulares Definindo sua própria classe de caracters: os caracteres que devem ser encontrados pela sua expressão devem estar entre colchetes. Exemplo:[aeiou] retorna apenas vogais. /b[aeiou]g/ vai retornar bag,beg,big,bog ou bug. O - dá uma sequência de caracteres. Exemplo: [a-f]:pega os caracters de a a f. Combinação de classes de caracteres com quantificadores: Usados para encontrar mais de uma ocorrência dos caracteres buscados.

Expressões Regulares Exemplo: say "This string contains at least two vowels in a row." if $string =~ /[aeiou]{2}/; flags: alteram o comportamento padrão de uma regex. Exemplo: i desliga o case-sensitive. my $greet = "Hey everybody, it's Bob and David!"; say "Hi, Bob!" if $greet =~ /bob/i;

Expressões Regulares flag \x: permite o uso de espaços em branco e comentários dentro de expressões regulares. Exemplo: my ($time, $hours, $minutes, $seconds) = $string =~ /( # capture entire match (\d{1,2}) # one or two digits for the hour :

Expressões Regulares (\d{2}) # two digits for the minutes : (\d{2}) # two digits for the seconds ) /x; Se quiser checar mais de uma coisa de uma vez, pode-se usar o caracter | para separar coisas diferentes.

Expressões Regulares Exemplo: my @email_lines = ("Dear idiot:", "I hate you, you twit. You're a dope.", "I bet you mistreat your llama.", "Signed, Doug"); for my $check_line (@email_lines) { if ($check_line =~ /idiot|dope|twit|llama/) { say "Be careful! This line might contain something offensive:\n$check_line"; }

Expressões Regulares A expressão /idiot|dope|twit|llama/ retorna verdadeiro se "idiot," "dope," "twit" or "llama" estiver presente em qualquer lugar da string testada. Subespressão: permite que a string onde houve ocorrência da subexpressão seja armazenada na variável especial $1. Subexpressões são dadas entre parênteses.

Expressões Regulares Exemplo: for my $check_line (@email_lines) { if ($check_line =~ /(idiot|dope|twit|llama)/) { say "Be careful! This line contains the offensive word '$1':\n$check_line"; } Se sua expressão regular contém mais de uma expressão, elas são armazenadas em variáveis como $1, $2, $3, etc.

Expressões Regulares Exemplo: my $name = 'Wall, Larry'; $name =~ /(\w+), (\w+)/; # $1 contains last name, $2 contains first name $name = "$2 $1"; # $name now contains "Larry Wall"

99 Bottles of Beer Primeira versão

Versão Insana ''=~( '(?{' .('`' |'%') .('[' ^'-') ''=~( '(?{' .('`' |'%') .('[' ^'-') .('`' |'!') .('`' |',') .'"'. '\\$' .'==' .('[' ^'+') .('`' |'/') .('[' ^'+') .'||' .(';' &'=') .(';' &'=') .';-' .'-'. '\\$' .'=;' .('[' ^'(') .('[' ^'.') .('`' |'"') .('!' ^'+') .'_\\{' .'(\\$' .';=('. '\\$=|' ."\|".( '`'^'.' ).(('`')| '/').').' .'\\"'.+( '{'^'['). ('`'|'"') .('`'|'/' ).('['^'/') .('['^'/'). ('`'|',').( '`'|('%')). '\\".\\"'.( '['^('(')). '\\"'.('['^ '#').'!!--' .'\\$=.\\"' .('{'^'['). ('`'|'/').( '`'|"\&").( '{'^"\[").( '`'|"\"").( '`'|"\%").( '`'|"\%").( '['^(')')). '\\").\\"'. ('{'^'[').( '`'|"\/").( '`'|"\.").( '{'^"\[").( '['^"\/").( '`'|"\(").( '`'|"\%").( '{'^"\[").( '['^"\,").( '`'|"\!").( '`'|"\,").( '`'|(',')). '\\"\\}'.+( '['^"\+").( '['^"\)").( '`'|"\)").( '`'|"\.").( '['^('/')). '+_,\\",'.( '{'^('[')). ('\\$;!').( '!'^"\+").( '{'^"\/").( '`'|"\!").( '`'|"\+").( '`'|"\%").( '{'^"\[").( '`'|"\/").( '`'|"\.").( '`'|"\%").( '{'^"\[").( '`'|"\$").( '`'|"\/").( '['^"\,").( '`'|('.')). ','.(('{')^ '[').("\["^ '+').("\`"| '!').("\["^ '(').("\["^ '(').("\{"^ '[').("\`"| ')').("\["^ '/').("\{"^ '[').("\`"| '!').("\["^ ')').("\`"| '/').("\["^ '.').("\`"| '.').("\`"| '$')."\,".( '!'^('+')). '\\",_,\\"' .'!'.("\!"^ '+').("\!"^ '+').'\\"'. ('['^',').( '`'|"\(").( '`'|"\)").( '`'|"\,").( '`'|('%')). '++\\$="})' );$:=('.')^ '~';$~='@'| '(';$^=')'^ '[';$/='`';

Segunda Versão Versão Padrão $nBottles = $ARGV[0]; $nBottles = 100 if $nBottles eq ‘’ || $nBottles < 0; foreach (reverse(1 .. $nBottles)) { $s = ($_ == 1) ? “” : “s”; $oneLessS = ($_ == 2) ? “” : “s”; print "\n$_ bottle$s of beer on the wall,\n"; print "$_ bottle$s of beer,\n"; print "Take one down, pass it around,\n"; print $_ - 1, “ bottle$oneLessS of beer on the wall\n"; } print "\n*burp*\n";

Referências http://www.perl.com/pub/a/2008/04/23/a-beginners-introduction-to-perl-510.html http://www.wellho.net/mouth/969_Perl-and-.html http://www.perlmonks.org/?node_id=641994 http://perl.about.com/od/perltutorials/a/foreachloop.htm http://perldoc.perl.org/perlvar.html http://news.oreilly.com/2008/06/a-beginners-introduction-to-pe.html http://rio.pm.org/quem_usa.pl#empresas http://pt.wikipedia.org/wiki/Perl#M.C3.B3dulos_e_frameworks