• Nenhum resultado encontrado

Introdução ao Perl. Faculdade do Pará-FAP Disciplina: Programação em Ambiente de Redes Professor: Armando Hage

N/A
N/A
Protected

Academic year: 2021

Share "Introdução ao Perl. Faculdade do Pará-FAP Disciplina: Programação em Ambiente de Redes Professor: Armando Hage"

Copied!
27
0
0

Texto

(1)

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

(2)

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.

(3)

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.

(4)

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.

(5)

#!/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

(6)

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

(7)

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.

(8)

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

(9)

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

(10)

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.

(11)

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

(12)

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

$

(13)

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

(14)

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."";

(15)

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

(16)

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...

}

(17)

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?

(18)

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";

(19)

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

(20)

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,

(21)

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"};

(22)

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).

(23)

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.

(24)

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.

(25)

Executando um Script através de CGI

Executando 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>

(26)

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.

(27)

Executando um Script através de CGI

Executando um Script através de CGI

Atividade

Atividade

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.

Referências

Documentos relacionados

Essas poucas linhas representam indicadores essenciais para a construção de uma Igreja que se desloca para a perife- ria e, num mundo de aceleração, encontra tempo para cuidar,

ABSTRACT: The toxicological effects of crude ethanolic extracts (CEE) of the seed and bark of Persea americana have been analyzed on larvae and pupae of

•   O  material  a  seguir  consiste  de  adaptações  e  extensões  dos  originais  gentilmente  cedidos  pelo 

O método proposto no manual do Projeto GIDES (CPRM, 2018) para elaboração de cartas de perigo a movimentos gravitacionais de massa objetiva identificar, por

II - os docentes efetivos, com regime de trabalho de 20 (vinte) horas semanais, terão sua carga horária alocada, preferencialmente, para ministrar aulas, sendo o mínimo de 8 (oito)

As métricas por trás do Tomatometer, os seus diversos critérios de cálculo, o selo Certified Fresh, o conceito de Top Critic, como também a possibilidade que usuários cadastrados

aulas a serem ministradas, possibilitando a construção do senso crítico do aluno diante do estudo, buscando sempre uma relação com a temática proposta e o cotidiano

GONÇALVES, Carlos Roberto. Direito civil brasileiro.. pagamento ou o pagamento em prestações, o que torna mais fácil a forma como será desempenhada a atividade, o