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
Introdução
Introdução
Perl (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.
Pre-requistos
Pre-requistos
Experiê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 Perl
O 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 interpretada
interpretada
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.
#!/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 simples
Um programa simples
Um programa simples
Um 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áveis
Declaraçã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.
Operadores
Operadores
O 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
Operadores
Operadores
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
Pausa para exercícios
Pausa para exercícios
Reescreva 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 Arquivos
Manipulando 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
Matrizes
Matrizes
Um 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
$
Atribuição de Matrizes
Atribuiçã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 Matrizes
Mostrando Matrizes
Exercí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 Arquivos
Manipulando Arquivos
Importante
Importante
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
Estruturas de Controle
Estruturas de Controle
foreach
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 Controle
Estruturas 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 Controle
Estruturas de Controle
For
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 Controle
Estruturas 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 Controle
Estruturas 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,
Exercício
Exercício
Desenvolva 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 CGI
Executando um Script através de CGI
A 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 CGI
Executando um Script através de CGI
Quando 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 CGI
Executando um Script através de CGI
Quando 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 CGI
Executando um Script através de CGI
#!/usr/bin/perlprint "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 CGI
Executando um Script através de CGI
Existe 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 input
Esse programa tem que ser gravado no diretório onde se roda os CGI's no servidor.