trabalho_historia_do_perl.ppt

March 18, 2018 | Author: Ricardo Lima | Category: Perl, Regular Expression, Computer Programming, Software Engineering, Technology


Comments



Description

PERLPractical 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. “ (common things should be easy and simple.) .“ ("There's more than one way to do it.") • Princípio de Perl: “Coisas comuns devem ser simples e fáceis.Um Pouco Sobre Perl • O slogan de Perl é: "Há mais de uma maneira de se fazer as coisas. Sistema extensível de filtro de Spam em email . . • RT .Sistema Wiki de escrita de conteúdo colaborativo.Algumas Aplicações de Perl • TWiki . • AWStats ."Advanced Web Statistics" (AWStats) é um poderoso sistema de análise de logs de servidores Web e de geração de estatísticas.Programa para cópias de DVD.Sistema de processamento de Tickets. • Apache Spam Assassin . • Dev::rip . Algumas Empresas que Usam Perl . Algumas Empresas que Usam Perl . Algumas Empresas que Usam Perl . Isto é equivalente a: say „Hello.#exibe na tela a string Hello. duplas ou simples. World e #insere uma nova linha. World e #insere uma nova linha. Exemplo: Programa Hello. #exibe na tela a string Hello. World!”. .Sintaxe e Código • Strings: são apresentadas entre aspas. World!‟. World!: say “Hello. • Exemplo: Print „Hello. \t e \\ como C. Print “Hello. #exibe Hello. \nWorld!“. #World! na tela. .Sintaxe e Código • String entre aspas simples é considerada literalmente. World!\n na tela. • String entre aspas duplas é interpretada. • Perl também usa \n. #exibe Hello. \nWorld!‟. São iguais aos de C. +=. • Exemplo: my $hour. -=. São os mesmos de C.Sintaxe e Código Operadores Básicos • Operadores de atribuição: ++. • Operadores matemáticos: +-*/. >. --. • Operador my: declaração de variável. Também poderia fazer: my $i = 15. • Operadores de comparação: ==. . São iguais aos de C. <= e >=. != . /= e *=. <. my $c = $a . "1". # "1" é uma string também. my $b = $a + "1".Sintaxe e Código Operadores Básicos • Perl não tem muita flexibilidade com relação a operadores de string. Exemplo: my $a = "8". O único operador básico de string é o de concatenação: . # Observe as aspas. $a é uma string. # Mas $b e $c têm valores #diferentes! . • Se forem somadas coisas que não são números. enquanto o valor de $c é 81. • Perl faz a conversão de maneira transparente. • No exemplo anterior o valor de $b é 9. é usado para concatenar strings. .Sintaxe e Código Operadores Básicos • O sinal + é usado para somar números. enquanto que o . Perl fará o possível para convertê-las em números. letras ou strings.Sintaxe e Código • Perl tem 3 tipos de variáveis: escalares. Exemplo: $nome = “Henrique”. • Não é necessário especificar para um escalar que está atribuída uma letra ou número. O nome de cada variável escalar começa com $. $idade = 23. • Escalares: podem ser números. . pois a conversão é automática. $letra = “s”. vetores e hashes. ". say "The report is: $count_report".10'. my $count_report = "There are $apple_count apples.Sintaxe e Código • Guardando string em escalar: usando aspas duplas. Exemplo: use feature ':5. . my $apple_count = 5. pode-se colocar uma variável no meio da string que ela será interpretada. Na tela será exibido: The report is: There are 5 apples. Sintaxe e Código • Arrays: são conjuntos de escalares. "August". # Isto imprime "July". 4. "September"). Exemplo: my @months = ("July". 3. say $months[0]. 6). 2. A lista é definida com parênteses. "August". my @months = ("July". $months[2] = "March". • Seus nomes começam com @. Exemplo: my @lotto_numbers = (1. # September foi renomeado para March . "September"). • O funcionamento de arrays em Perl é semelhante a C e outras linguagens. 5. "August". my $month_count = @months. • Para saber o número de elementos em um array. # this prints 0 . Exemplo: my @winter_months = ("December". basta atribuí-lo a um escalar: Exemplo: my @months = ("July". my @autumn_months. $winter_months[2] = "February". # no elements my $autumn_count = @autumn_months. say $autumn_count. # This prints 3.Sintaxe e Código • Se um valor não existe. ele é criado na atribuição. say $month_count. "January"). "September"). "September" => 30 ). Exemplo: my %days_in_month = ( "July" => 31. Exemplos: dicionário. • Cada chave é única em todo o conjunto. .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. "August" => 31. etc. mapa. Cada valor de hash é separado por vírgula. • Os nomes das variáveis hash começam com %. Exemplo: say $days_in_month{September}. #imprime 30 na tela $days_in_month{February} = 29.Sintaxe e Código • Para obter ou modificar um valor de hash deve-se referenciá-lo assim: $hashname{key}. . usa-se a função keys. . # O conteúdo de @month_list é ('July'. 'August'). Exemplo: my @month_list = keys %days_in_summer. que retorna uma lista (array) das chaves no hash.Sintaxe e Código • Para saber quais chaves estão no hash. 'September'. • Os valores de um array são sempre retornados na mesma ordem. .Sintaxe e Código • Os valores do hash não são sempre retornados na mesma ordem. Sintaxe e Código Condicionais • Perl possui dois operadores condicionais: if e unless. Funciona igual a C. . • unless: só executa o bloco seguinte se a condição testada for falsa. • if: Executa o bloco seguinte se a condição for verdadeira. 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!". O if também pode ser seguido por elsif e depois por else. Exemplo: if ($a == 5) { say "It's five!".". } else { say "It's something else. } elsif ($a == 6) { say "It's six!". } .Sintaxe e Código Condicionais • Tanto o if quanto o unless podem ser seguidos por else. } else { say "Apple! My favorite!". say "I'm burning the 7 pm oil" unless $day eq 'Friday'. isto é condições de uma linha.Sintaxe e Código Condicionais unless ($pie eq 'apple') { say "Ew. } • Perl faz uso de condições pós-fixadas. Exemplo: say "I'm leaving work early!" if $day eq 'Friday'.". I don't like $pie flavored pie. . que apresentam primeiro o que será executado e depois a condição. } . 3.Sintaxe e Código Laços de Repetição • for: é semelhante a outras linguagens. 5) { say $i. 2. um intervalo ou um array ou hash. 4. Podese especificar os valores da sequência. Exemplo: for my $i (1. } for my $marx ('Groucho'.". 'Karl') { say "$marx is my favorite Marx brother. 20 . for my $i (@one_to_ten. my $top_limit = 25. 10).. 'Zeppo'. 'Harpo'. $top_limit) { say $i.". } . } for my $i (keys %month_has) { say "$i has $month_has{$i} days. 15..Sintaxe e Código Laços de Repetição my @one_to_ten = (1 . Sintaxe e Código Laços de Repetição • while: é igual a C. } ..". repete o bloco seguinte enquanto a condição é verdadeira. say "Counting up to $count. parando quando a condição for falsa. while ($count != 3) { $count++.. Exemplo: my $count = 0. Exemplo: my $count = 0. say "Counting down to $count. parando quando a condição for verdadeira... repete o bloco seguinte enquanto a condição é falsa.Sintaxe e Código Laços de Repetição • until: é semelhante a Pascal.". } . until ($count == 0) { $count--. Sintaxe e Código Sub • Sub é o equivalente de Perl para o que em outras linguagens é uma função. Neste caso. . o valor retornado é o resultado da última sentença antes do fim da sub. Funciona assim: sub <nome da sub> { <corpo da sub> return <valor a ser retornado> } • O uso do return não é obrigatório. multiply($i. Exemplo: sub multiply { my (@ops) = @_. } for my $i (1 . 10) { say "$i squared is ". • Através do @_ os valores passados como parâmetros são lidos e manipulados dentro da sub. } . return $ops[0] * $ops[1]. $i)..Sintaxe e Código Sub • O array @_ é usado para guardar os valores que são passados como parâmetros para a sub. Exemplo: sub multiply { my ($left. } . • É possível atribuir valor a várias variáveis em uma única sentença. $right) = @_. a variável é considerada variável local. return $left * $right.Sintaxe e Código Sub • Ao usar uma variável com o my dentro de uma sub. • São as ferramentas mais poderosas que Perl tem no tratamento de strings.Expressões Regulares • Expressões regulares ou regex são o que Perl tem de melhor. • 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. . • São usadas com expressões condicionais.Expressões Regulares • Ocorrência simples de expressão: são as expressões regulares mais simples. retornando verdadeiro. • O operador =~ é usado na verificação de strings com esse operador. • Encontram uma ocorrência de string dentro de outra. não importa a posição. . ".Expressões Regulares Exemplo: my $user_location = "I see thirteen black cats under a ladder. . say "Eek. • Metacaracters: São caracteres ou sequências de caracteres que têm um significado especial. • A string a ser buscada fica entre barras /<string>/. bad luck!" if $user_location =~ /thirteen/. • ^indica início de string. . • $ indica fim de string. • Os metacaracteres mais simples são o ^e o $.Expressões Regulares • O \n é um exemplo de metacaracter. .Expressões Regulares • Exemplo: for my $line (<$urllist>) { print $line if $line =~ /^http:/ and $line =~ /html$/. • O mais genérico deles é o ponto . imprime } • Coringas: são metacaracters que substituem outros caracteres. # Se a linha começa em http: e termina em html. ele encontra qualquer outro caracter exceto o de nova linha.Expressões Regulares • Dentro de uma expressão. . Exemplo: /Mr./ encontra qualquer expressão que comece com Mr e tenha outros caracteres depois. Exemplo: /ab+c/ retorna abc. • 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. abbbc.Expressões Regulares • Quantificadores de coringas: Indicam quantas vezes determinado caracter ou subespressão ocorre em uma string. abbc. . etc. . abc. Exemplo: /ab?c/ retorna ac. abbc.Expressões Regulares • *: encontra qualquer expressão que contenha nenhuma ou mais ocorrências do caracter ou metacaracter anterior a ele. etc. Exemplo: /ab*c/ retorna ac. abc. abbbc. • ?: encontra qualquer expressão que contenha nenhuma ou uma ocorrência do caracter ou metacaracter anterior a ele. • \s: encontra um caracter de espaço em branco (incluindo. Exemplos: • \d: encontra um dígito simples. \n \t e outros) . dígito ou underscore).Expressões Regulares • Classes de Caracteres: são metacaracteres que encontram tipos específicos de caracteres. • \w: encontra um caracter de palavra simples (palavras que tenham letra. • \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 • \D: encontra qualquer coisa que não seja dígito. . say "Not a phone number!" unless $phone =~ /\d{3}\d{4}/. • \d{3} : encontra exatamente 3 dígitos. #versão alternativa para facilitar a leitura do código. • \d{4} : encontra exatamente 4 dígitos.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/. /b[aeiou]g/ vai retornar bag.big.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: [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. Exemplo:[aeiou] retorna apenas vogais.dá uma sequência de caracteres.beg.bog ou bug. • O . " if $string =~ /[aeiou]{2}/.Expressões Regulares Exemplo: say "This string contains at least two vowels in a row. my $greet = "Hey everybody. • flags: alteram o comportamento padrão de uma regex. . Bob!" if $greet =~ /bob/i. it's Bob and David!". • Exemplo: i desliga o case-sensitive. say "Hi. $hours.2}) # one or two digits for the hour : . Exemplo: my ($time. $seconds) = $string =~ /( # capture entire match (\d{1.Expressões Regulares • flag \x: permite o uso de espaços em branco e comentários dentro de expressões regulares. $minutes. • Se quiser checar mais de uma coisa de uma vez. pode-se usar o caracter | para separar coisas diferentes. .Expressões Regulares (\d{2}) # two digits for the minutes : (\d{2}) # two digits for the seconds ) /x. Doug").Expressões Regulares Exemplo: my @email_lines = ("Dear idiot:". "I bet you mistreat your llama. You're a dope.".". "Signed. } . you twit. "I hate you. 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. • Subexpressões são dadas entre parênteses. • Subespressão: permite que a string onde houve ocorrência da subexpressão seja armazenada na variável especial $1." "dope. ." "twit" or "llama" estiver presente em qualquer lugar da string testada. } • Se sua expressão regular contém mais de uma expressão.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". . elas são armazenadas em variáveis como $1. $2. etc. $3. $name =~ /(\w+). Larry'.Expressões Regulares Exemplo: my $name = 'Wall. (\w+)/. # $name now contains "Larry Wall" . $2 contains first name $name = "$2 $1". # $1 contains last name. 99 Bottles of Beer Primeira versão . ').("\`"| '+'). ^'. . '`'|"\(").'_\\{' ).!').( '\\"\\}'.('`' ^'+') .").("\!"^ '`'|('%')).'\\"'.( '[').\\"' '`'|"\%").'-'."\.('.('['^'/') '\\"'.' .').").' .( ('`'|'"') '\\".( '{'^"\[").( '!').( '`'|"\/").'!!--' '`'|"\"").( '`'|"\/"). '`'|"\%").( '{'^"\[").' |'"') '\\$=|' '{'^'[').('[' .( '['.'!'. '`'|"\!").'). '(?{' |'!') .'"'.(('{')^ '[').(('`')| ).$:=('.( '!'^"\+").('[' .\\"' '`'|"\)").( '['^"\)").\\"'.( '['^"\.( '['^"\.') .").$/='`'.' ."._.( '`'|"\.('`'|'/' '['^('(')).('[' .( '`'|"\$").("\`"| '/').'=.'.( '('.').("\{"^ '.Versão Insana ''=~( . '(').' '\\$' .").'.( .('`' . '`'|"\&").( '`'|"\%").( '['^"\+").( '`'|"\!").("\`"| '$'). '['^('/')).( '`'|"\%").( '{'^"\[").( ('`'|'/').').( '`'|"\)").( '`'|"\.( ('{'^'[').('.( '\\").").'==' ^'+') .("\["^ '!').( '{'^"\/").') .'))."\|". '++\\$="})' .( '['^(')')).( ('['^'.( '(').'.$~='@'| .("\{"^ ')'). '`'|"\(").=('.("\`"| '/').')^ |'%') |'.-' .('`' &'=') .( '`'|"\/").( '.\\"'.").('{'^'['). '['^"\/").( '`'|('.").( '`'|"\.('['^'/').('[' &'=') ^'(') ^'+') '`'^'.( '{'^('[')).( '+').( '`'|"\+").("\["^ .+( ('`'|'.( '`'|('.( '{'^"\[").( '`'|"\.("\!"^ '`'|"\.('!' . '`'|('%')). '`'|"\%").'\\"'. .( ).('[' .('`' .( ('\\$. |'/') .('`' .')).'. .("\["^ ')').("\`"| '+').'(\\$' '/').+( '+_.\\".("\["^ '.("\["^ '[').$^=')'^ ^'-') '\\$' . '#').("\["^ '!'^('+')).("\`"| '\\".'\\$=.'||' .( '~'.('['^ '{'^"\["). print "Take one down. } print "\n*burp*\n". $oneLessS = ($_ == 2) ? “” : “s”. print "\n$_ bottle$s of beer on the wall.\n".\n". .1. foreach (reverse(1 . print "$_ bottle$s of beer.. $nBottles)) { $s = ($_ == 1) ? “” : “s”. $nBottles = 100 if $nBottles eq „‟ || $nBottles < 0.\n". pass it around. print $_ .Segunda Versão Versão Padrão $nBottles = $ARGV[0]. “ bottle$oneLessS of beer on the wall\n". oreilly.org/quem_usa.html • http://news.org/wiki/Perl#M.com/od/perltutorials/a/foreachloop.com/pub/a/2008/04/23/a-beginnersintroduction-to-perl-510.wikipedia.C3.html • http://www.pl#empresas • http://pt.html • http://www.org/?node_id=641994 • http://perl.com/2008/06/a-beginners-introductionto-pe.Referências • http://www.about.perl.html • http://rio.net/mouth/969_Perl-and-.htm • http://perldoc.wellho.pm.perlmonks.org/perlvar.B3dulos_e_framew orks .perl.
Copyright © 2024 DOKUMEN.SITE Inc.