Aula Perl Script

27
Faculdade do Pará-FAP Faculdade do Pará-FAP Disciplina: Programação em Ambiente de Disciplina: Programação em Ambiente de Redes Redes Professor: Armando Hage Professor: Armando Hage Introdução ao Perl Introdução ao Perl Introdução Introdução O que é o Perl O que é o Perl Perl Script Perl Script Primeiro Script Primeiro Script Exemplos Exemplos

Transcript of Aula Perl Script

Faculdade do Pará-FAPFaculdade do Pará-FAPDisciplina: Programação em Ambiente de Disciplina: Programação em Ambiente de RedesRedesProfessor: Armando HageProfessor: Armando Hage

Introdução ao PerlIntrodução ao Perl

IntroduçãoIntrodução

O que é o PerlO que é o Perl

Perl ScriptPerl Script

Primeiro ScriptPrimeiro Script

ExemplosExemplos

IntroduçãoIntroduçãoPerl (Practical Extraction and Report Language - Linguagem Prática para Extração e Relatório).

É uma linguagem de programação de alto nível criada por Larry Wall.

É descendente de C, mas também sofreu grandes influências de várias linguagens e ferramentas, tais como C++, sed, awk, gep e unix shell.

Principais facilidades:

– Manipulação de processos, arquivos e textos.

– Boa para desenvolvimento rápido de protótipos.

– Utilitários e gerenciamento do sistema operacional.

– Possui suporte para acesso a bancos de dados, redes, e programação para a web.

Seu desenvolvimento sempre foi gratuíto

Pre-requistosPre-requistosExperiência básica em programação (em qualquer linguagem)

Disponha de algum meio para se exercitar (possa usar Perl, tanto o interpretador sozinho como junto com um servidor web)

Algum conhecimento de HTML e CGI para utilizar os recursos de programção para internet.

O que é o PerlO que é o Perl

É uma linguagem de programação de alto nível criada por É uma linguagem de programação de alto nível criada por Larry Wall. Larry Wall.

Incorpora muito da filosofia e da funcionalidade do sistema Incorpora muito da filosofia e da funcionalidade do sistema UNIX.UNIX.

É uma linguagem É uma linguagem interpretadainterpretada otimizada para manipulação otimizada para manipulação de strings, entrada/saída e tarefas com o sistema de strings, entrada/saída e tarefas com o sistema operacional.operacional.

Incorpora elementos da sintaxe do bourne shell, csh, awk, Incorpora elementos da sintaxe do bourne shell, csh, awk, sed, grep e C. sed, grep e C.

Possui suporte para aplicações web com banco de dados.Possui suporte para aplicações web com banco de dados.

#!/usr/local/bin/perl

print 'Olá mundo.'; # mostra uma mensagem

Todo programa escrito em Perl deve sempre começar com esta linha: #!/usr/local/bin/perl

Comentários podem ser inseridos em um programa através do símbolo #

Toda declaração em Perl deve terminar com um ponto-e-vírgula .

Para que a mesma informação seja mostrada pelo seu browser, você deve modificar o programa, de forma que a mensagem seja reconhecida pelo formato HTML ou como texto simples.

print "Content-type: text/html\n\n"; # informa ao browser

print 'Olá mundo.'; # mostra a mensagem simples, sem formatação

Um programa simplesUm programa simples

Um programa simplesUm programa simples

O programa deve ser salvo com a extensão .cgi (que indica ser um script) ou com .pl (de Perl), e depois torná-lo executável com o comando chmod +x.

Para rodar o programa deve-se digitar um destes comandos:perl programa (pelo DOS ou UNIX)./programa (pelo UNIX)programa (pelo UNIX)

perl -w programa

– Mostrará avisos e outras mensagens de ajuda antes de tentar executar o programa.

perl -d programa

– O Perl compila primeiro o programa e então executa sua versão compilada

Declaração de variáveisDeclaração de variáveis

O tipo mais usado de variável no Perl é o escalar.

Variáveis escalares podem conter caracteres e/ou números.

$prioridade = 9;

$prioridade = 'alta';

$prioridade = '9';

$default = '0009';

Nomes de variáveis consistem de números, letras e símbolos,mas não devem começar com números depois do $

A variável $_ é especial

O Perl é case sensitive.

OperadoresOperadoresO Perl utiliza todas as operações usuais na linguagem C:

$a = 1 + 2; # soma 1 e 2 e armazena em $a

$a = 3 - 4; # subtrai 4 de 3 e armazena em $a

$a = 5 * 6; # multiplica 5 por 6

$a = 7 / 8; # divide 7 por 8 e retorna 0.875

$a = 9 ** 10; # 9 elevado por 10

$a = 5 % 2; # resto da divisão de 5 por 2

++$a; # incrementa $a e retorna seu valor

$a++; # retorna $a e depois incrementa em 1

--$a; # decrementa $a e retorna seu valor

$a--; # retorna $a e depois decrementa em 1

OperadoresOperadores

Perl para caracteres, existem os seguintes operadores:

$a = $b . $c; # concatena $b e $c

$a = $b x $c; # $b repetido $c vezes

Para atribuir valores, Perl utiliza:

$a = $b; # atribui $b para $a

$a += $b; # soma $b para $a

$a -= $b; # subtrai $b de $a

$a .= $b; # acrescenta $b em $a

Pausa para exercíciosPausa para exercíciosReescreva o primeiro programa de modo que a string seja atribuída para uma variável e esta variável seja impressa com um caractere newline(“\n”). Use as aspas duplas e não utilize o operador de concatenação.

Relize testes de concatenação com Strings e valores numericos.

Pesquise como é feita a entrada de dados em Perl, e desenvolva um programa que leia uma valor digitado pelo usuário, e apresente este valor elevado a décima potência.

Manipulando ArquivosManipulando Arquivos#!/usr/bin/perl

#

# Programa para abrir o arquivo de senhas, ler,

# escrever, e fechá-lo.

$arquivo = '/etc/passwd'; # nome do arquivo

open(INFO, $arquivo); # abre o arquivo

@linhas = <INFO>; # coloca ele em uma matriz

close(INFO); # fecha o arquivo

print @linhas; # exibe a matriz

MatrizesMatrizesUm tipo mais interessante de variável é o de matrizes (vetores) que é uma lista de variáveis escalares.

Variáveis de matrizes tem o mesmo formato das escalares exceto que eles são prefixados pelo símbolo @.

@comida = ("maçãs", "pêras", "uvas");

@musica = ("flauta", "gaita");

A matriz é acessada pelo uso de índices começando do zero, e colchetes são usados para especificar cada índice.

$comida[2]

A resposta do vetor é uvas. O símbolo @ foi mudado para $ porque uvas é o valor de uma variável escalar.

Atribuição de MatrizesAtribuição de Matrizes@mais_musica = ("órgão", @musica, "harpa");

@mais_musica = ("órgão", "flauta", "gaita", "harpa");

Um modo simples de acrescentar estes elementos é usar a declaração:

push(@comida, "ovos");

Acrescenta ovos ao fim da matriz @comida

Para remover o último item de uma lista e retorná-lo, use a função pop.

$outra_comida = pop(@comida);# agora $outra_comida = "uvas"

É possível atribuir uma matriz para uma variável escalar.

$c = @comida;

$c = "@comida"; #Somente o comprimento

$#comida #Retorna o indice o ultimo elemento

Mostrando MatrizesMostrando MatrizesExercício.

Experimente cada uma das três declarações acima para ver o que elas fazem.

#!/usr/bin/perl

@comida = ("maçãs", "pêras", "uvas");

print @comida;

print "@comida";

print @comida."";

Manipulando ArquivosManipulando ArquivosImportanteImportante

Primeiro, a declaração open pode também especificar um arquivo para saída ou para acréscimo, assim como para entrada. Para fazer isso, use o símbolo > para saída e >> para acréscimos:

open(INFO, $arquivo); # abre para leitura

open(INFO, ">$arquivo"); # abre para escrita

open(INFO, ">>$arquivo"); # permite acrescentar

open(INFO, "<$arquivo"); # também abre para leitura

print INFO "Esta linha vai para o arquivo.\n"; #Grava em um arquivo

Estruturas de ControleEstruturas de Controleforeach

Para executar cada linha de uma matriz ou de outra estrutura com formato de lista (como linhas em um arquivo), Perl usa a estrutura foreach. Ela tem o seguinte formato:

foreach $petisco (@comida) # visitar cada item e colocá-lo

# em $petisco

{

print "$petisco\n"; # exibe cada item

print "Yum yum\n"; # de @comida...

}

Estruturas de ControleEstruturas de Controle$a == $b # $a é numericamente igual a $b?

# cuidado: não use só o operador =

$a != $b # $a é numericamente diferente de $b?

$a eq $b # $a é uma string igual a $b?

$a ne $b # $a é uma string diferente de $b?

Você pode também tentar usar operadores lógicos e, ou, não:

($a && $b) # $a e $b são verdadeiros?

($a || $b) # $a ou $b é verdadeiro?

!($a) # $a é falso?

Estruturas de ControleEstruturas de ControleFor

Perl possui a estrutura for que funciona da mesma forma que no C.

for (inicializar; testar; incrementar){

primeira_ação;

segunda_ação;

etc;

}

for ($i = 0; $i < 10; ++$i) # começa com $i = 0

# executa enquanto $i < 10

# incrementa $i antes de repetir

# neste caso $i++ tem o mesmo efeito

{ print "$i\n";}

Estruturas de ControleEstruturas de Controle•while e until

Aqui está um programa que lê do teclado e não continua até que a senha correta seja digitada:

#!/usr/bin/perl

print "Senha? "; # pede pela senha

$a = <STDIN>; # lê do teclado

chop $a; # remove o newline no final da linha

while ($a ne "teste") # enquanto a senha estiver errada...

{

print " errada.\n Senha? "; # solicita novamente

$a = <STDIN>; # lê do teclado

chop $a; # remove o caractere newline no final

}

Estruturas de ControleEstruturas de Controle•while e until

Outra técnica útil, é colocar o while ou until no final do bloco de declarações, em vez de colocar no início. Isto requer a presença do operador do para marcar o início do bloco e o teste no final.

#!/usr/bin/perl

do{

print "Senha? "; # pede pela senha

$a = <STDIN>; # lê do teclado

chop $a; # remove o último caractere, newline

}

while ($a ne "teste"); # repete enquanto a senha for errada

# usando until no lugar de while,

# until ($a eq "teste"); repete até que a senha esteja correta

ExercícioExercícioDesenvolva um programa que leia 20 valores e armazene-os em um vetor. Ao final informe quantos são iguais a 10 e a 20 e suas respectivas posições.

Pesquisa a utilização de matrizes associadas(Registro), por exemplo, suponha que queremos criar uma matriz de pessoas com suas idades.

%idades = ("Michael Caine", 39,

"Den", 34,

"Angie", 27,

"Willy", "21 anos de cachorro",

"A rainha mãe", 108);

O que acontecerá em cada um das instruções abaixo:$idade{"Michael Caine"};

$idade{"Den"};

$idade{"Angie"};

$idade{"Willy"};

$idade{"A rainha mãe"};

Executando um Script através de CGIExecutando um Script através de CGIA tarefa mais comun hoje em que a linguagem Perl é usada é tornar uma página HTML interativa.

É chamado de CGI (Common Gateway Interface) o protocolo através do qual o servidor HTTP se comunica com um programa no mesmo computador.

O programa usado pode ser qualquer um que funcione no computador. Ele pode ser um programa em C ou C++, compilado para aquele computador.

O único requisito é que saiba usar o protocolo CGI.

Ao ser usado desse modo, chamaremos genericamente o programa ou o script de programa CGI.

O servidor HTTP(Apache Web Server) encarrega-se de ativar o programa ou script e de passar para ele as informações recebidas.

As variáveis mais importantes são QUERY_STRING, que normalmente possui o pedido da informação desejada (query), e PATH_INFO, que permite que informações extras sejam transmitidas para o servidor (como a localização do programa CGI).

Executando um Script através de CGIExecutando um Script através de CGIQuando um programa cliente (um browser, por exemplo) envia uma URL ao servidor HTTP, pode incluir um ponto de interrogação ? e a seguir uma string.

A string pode ser acrescentada à URL por um documento ISINDEX, por um formulário, ou manualmente - em uma ligação (link). A string é codificada no formato URL padrão, isto é, troca os espaços em branco por + e converte os caracteres especiais em seu código hexadecimal precedido de %.

<FORM METHOD="POST" ACTION="/cgi-bin/script.pl">

Sua linguagem preferida: <INPUT TYPE="TEXT" NAME="linguagem" SIZE=30> <BR>

<INPUT TYPE="SUBMIT" VALUE="Enviar">

<INPUT TYPE="RESET" VALUE="Apagar">

</FORM>

A extensão pode ser (e muitas vezes o é) substituída por .cgi, ou até mesmo eliminada.

Executando um Script através de CGIExecutando um Script através de CGIQuando um programa cliente (um browser, por exemplo) envia uma URL ao servidor HTTP, pode incluir um ponto de interrogação ? e a seguir uma string.

A string pode ser acrescentada à URL por um documento ISINDEX, por um formulário, ou manualmente - em uma ligação (link). A string é codificada no formato URL padrão, isto é, troca os espaços em branco por + e converte os caracteres especiais em seu código hexadecimal precedido de %.

<FORM METHOD="POST" ACTION="/cgi-bin/script.pl">

Sua linguagem preferida: <INPUT TYPE="TEXT" NAME="linguagem" SIZE=30> <BR>

<INPUT TYPE="SUBMIT" VALUE="Enviar">

<INPUT TYPE="RESET" VALUE="Apagar">

</FORM>

A extensão pode ser (e muitas vezes o é) substituída por .cgi, ou até mesmo eliminada.

Clique <A HREF="/cgi-bin/perl-liga.pl">aqui</A> para testar

Executando um Script através de CGIExecutando um Script através de CGI#!/usr/bin/perl

print "Content/type: text/html\n\n";

print "<HTML>";

print "<HEAD><TITLE>Exemplo 3</TITLE></HEAD>";

print "<BODY>";

print "<H1>Exemplo CGI</H1>";

print "Funciona!<P>";

print "Programação para Ambiente de Redes.";

print "</BODY>";

print "</HTML>";

Dados do formulário - Como fazer isso em PERL ?

<HTML><BODY><FORM ACTION="http://seu_server/cgi-bin/cadastro.pl" method="post"><INPUT TYPE="TEXT" NAME="nome" SIZE="30">

<INPUT TYPE="SUBMIT" VALUE="Enviar"></body></html>

Executando um Script através de CGIExecutando um Script através de CGIExiste um progra em PERL chamado CGI-LIB.PL que facilita uma chamada em seu CGI para que ele pegue os dados do formulário, é como se fosse uma biblioteca.Encontra-se em http://www.acidwar.com/cgi/programacao/cgi-lib.zip, está com a extensão .txt , portanto copie para o bloco de notas ou qualquer editor de texto (caracteres ASCII) e salve como CGI-LIB.PL. Sendo a extensão .PL, você terá que colocar no diretório lib do interpretador PERL.

require 'cgi-lib.pl";&ReadParse(*input);print "Content-type:text/html \n\n";print "<html><body bgcolor=\"white\">";print "O seu nome eh $input{nome}";print "</body></html>";

Salve o arquivo como cadastro.pl&ReadParse(*input); - Serve para dizer que os valores serão passados para a váriavel inputEsse programa tem que ser gravado no diretório onde se roda os CGI's no servidor.

Executando um Script através de CGIExecutando um Script através de CGIAtividadeAtividade

Desenvolva um trabalho teórico que evidencie a instalção, configuração e integração com o servidor web Apache, para aplicações para web com Perl, utilizando CGI.Desenvolva uma página em HTML chamada pag01.html que tenha dois campos login e senha, e dois botões Enviar e Limpar dentro da tag <form>. Os dados submetidos deverão ser capturados por uma programa chamado autentica.pl que deverá realizar a comparação textual do login e senha com valores pré-definidos, apresentando uma mensagem de autenticação.Desenvolva uma página que submeta os dados a,b,c de uma equação do segundo grau para um programa em perl, e ao final apresente os valores do Delta, X1 e X2 caso existam.