




Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Neste documento, aprenda a controlar o fluxo de execução de seus programas perl usando estruturas de controle como foreach, for, while e until. Além disso, exploraremos as poderosas facilidades para manipulação de strings na perl, incluindo expressões regulares. Aprenda a comparar strings, utilizar operadores lógicos e condicionais, e muito mais.
Tipologia: Notas de estudo
1 / 8
Esta página não é visível na pré-visualização
Não perca as partes importantes!





@linhas =
Le o arquivo referênciado pelo apelido ( filehandle ) INFO e armazena as linhas no array @linhas. Note que a expressão
Modificar o programa de exemplo (acima) de modo que cala linha impressa seja precedida do simbolo #. Você tem que incluir uma linha e modificar outra linha ( esta é a dica ;) ). Use a variável $". Coisas estranhas podem acontecer, você pode encontra ajuda usando a opção -w mencioda no tópico executando um programa.
Muitas possibilidades interesantes surgem quando introduzimos controles de estrutura e loops. A Perl suporta vários tipos diferentes de controle de estrutura que são melhores que os controles do C, mas são muito similar as estruturas do Pascal. Agora vamos discutir um pouco sobre estas estruturas:
7.1 foreach Para ler todas a linhas de um array ou outro tipo de estrutura de lista a Perl usa a estrutura foreach.
@frutas = ("banana", "goiaba", "mamao"); foreach $maisfruta (@frutas) { print "$maisfruta\n"; print "Delicia...delicia ...\n"; }
As ações que devem ser repetidas várias vezes estão entre chaves. Na primeira vez da execução do bloco a variável $maisfruta recebe o valor do primeiro item de @frutas. Na próxima vez ela recebe o valor do segundo item de @frutas e este loop repete-se até o fim de @frutas, ou seja, até ler todos os itens de @frutas. Se @frutas estiver vazia quando iniciar o loop o bloco de ações nunca será executado.
7.2 Testes A próxima estrutura é utilizada para testar se uma condição é verdadeira ou falsa. Na Perl qualquer valor diferente de zero e qualquer string que não esteja vazia é considerada verdadeira. O número zero, o zero dentro de uma string e strings vazias são considerados falso. Vejamos alguns exemplos com números e strings:
$a = = $b # testa se $a é numericamente igual a $b, atenção NÃO use o operador = $a != $b # testa se $a é numericamente diferente de $b $a eq $b # testa se a string $a é igual a $b $a ne $b # testa se a string $a é diferente de $b
Podemos usar o "e" lógico, "ou" lógico e o "não" lógico:
($a && $b) # $a e $b são verdadeiros? ($a || $b) # $a ou $b são verdadeiro? !($a) # $a é falso?
7.3 for A estrutura for da Perl é similar a estrutura for do C.
for (inicializacao; teste; inclemento) { primeira ação segunda ação etc }
Primeiro para todo tratamento a inicialização é executada. Depois enquanto o teste for verdadeiro o bloco de ações é executado. Após a execução do bloco o inclemento é executado. Vejamos um exemplo que imprime os número de 0 a 9:
for ($i = 0; $i < 10; ++$i) { print "$i\n"; }
7.4 while e until Vejamos um programa que le algumas entradas do teclado e não continua enquanto a senha não for correta:
#!/usr/local/bin/perl
print "Senha?"; # pergunta pela senha de entrada $a =
O bloco de ações é executa enquanto a entrada não for verdadeira. A estrutura while é muito simples, mas esta é a oportunidade para notarmos algumas coisas. Primeiro, podemos receber uma entrada do teclado quando abrimos primeiramente o arquivo. Segundo, quando a senha é digitada $a recebe o valor incluindo uma nova linha (\n) no final. A função chop remove o último caractere de uma string, neste caso a nova linha (\n).
Lembre-se uma string vazia é considerada falsa.
É possivel colocar várias alternativas com operadores condicionais:
if (!$a) { print "A string está vazia ...\n"; } elsif (length($a) = = 1) { print "A string tem um caractere...\n"; } elsif (length($a) = = 2) { print "A string tem dois caracteres...\n"; } else { print "A string tem vários caracteres...\n"; }
Note que elsif NÃO tem o "e".
8.1 - Exercícios Localize um arquivo grande que contenha texto e brancos. No exercício anterior você imprimiu o arquivo de senhas com as linhas numeradas. Altere o programa de forma que ele trabalhe com arquivos de texto. Agora altere o programa novamente de forma que ele não imprima nem conte as linhas em branco. Lembre-se que quando uma linha é lida, automaticamente é incluido um caractere de nova linha ao final da linha lida.
Uma das propriedades mais utilizadas da Perl ( se não a mais utilizada) são as poderosas facilidades para manipulação de string. Esta propriedade é conhecida como expressões regulares (RE) que é copiada de muitas das ferramentas do UNIX.
9.1 Expressões regulares (RE) Uma expressão regular fica dentro de barras ( /RE/ ), e comparação é feita com o operador =~. A expressão abaixo é verdadeira se a string " ola " aparecer na variável $sentenca.
$sentenca =~ /ola/
As expressões regulares (RE) são case sensitive , ou seja diferenciam maiusculas de minusculas, a expressão acima seria falsa se:
$sentenca = "Ola meus amigos"
por que o "O" de ola está em maiusculo.
O operador != é utilizado para a negação da RE. Veja o exemplo abaixo
$sentenca != /ola/
é verdadeiro por que a string ola não aparece na sentença.
9.2 A variável especial $_ Nos podemos usar a condicional da seguinte forma
if ($sentenca =~ /casa/) { print "Nos estamos falando da linda casa...\n"; }
a mensagem será impressa se a string casa estiver na variável $sentenca , veja:
$sentenca = "A linda casa de campo"; $sentenca = "O casa rao da avenida das palmeiras"; $sentenca = "O casa co de vento";
logo, no nosso exemplo a mensagem seria impressa em qualquer um dos casos.
Mas frequentemente nós comparamos a sentença com a variável especial $_, que é escalar. Se nós fizermos isso, poderemos desconsiderar os operadores de igualdade ( =~ ) e diferença ( != ) e escrever a sentença como segue abaixo:
if (/casa/) { print "Nos estamos falando da linda casa...\n"; }
A variável $_ é o padrão ( default ) para muitas operações da Perl e consequente você vai encontrar este tipo de comparação com muita freqüência.
Bem, quando eu estava iniciando meus estudos da Perl, tive dificuldades para entender o funcionamento da variável $_ , então vou montar um outro exemplo para os que tiverem dificuldades como eu tive.
$_ é como uma copia da última operação de atribuição, então se:
$teste = "ola";
e se fizermos:
print $_;
o resultado sera:
Neste ponto você já tem condições de pular para o exercício e faze-lo, o resto são referências.
Uma barra vertical | representa um ou e parentese ( ... ) são usados para agrupamento de strings:
frank|ned # frank ou ned (tr|br)incar # tr incar ou br incar (da)+ # da ou dada ou dadada ou ...
Mais caracteres especiais:
\n # nova linha \t # um tab \w # qualquer palavra alfanumérica - semelhante a [a-zA-Z0-9_] \W # qualquer palavra sem letras ou números - semelhante a [^a-zA-Z0-9_] \d # qualquer dígito - semelhate a [0-9] \D # NÃO dígitos - semelhante a [^0-9] \s # qualquer caractere de espaço: espaço, tab, nona linha, etc \S # qualquer caractere diferente de espaço \b # qualquer palavra dentro do limite, ou seja fora de [ ] \B # qualquer palafra fora do limite
Alguns caracteres são um caso peculiar quando trata-se expressões regulares, se você precisar usa-los devem ser precedidod de uma barra invertida:
| # barra vertical [ # abertura de colchete ) # fechamento de parentese * # asterisco \ ^ # símbolo de circunflexo @ # símbolo de arroba / # barra \ # barra invertida
9.4 Alguns exemplos de RE
9.5 Exercícios
Referência :
http://agora.leeds.ac.uk/Perl/start.html Learning Perl (ISBN 1-56592-042-2) Programming Perl (ISBN 1-56592-149-6) Perl 5 Desktop Referenc (ISBN 1-56592-187-9) Teach Yourself CGI programming with Perl 5 in a week (ISBN 1-57521-196-3) Perl 5 quick reference (ISBN 85-352-0144-0)