Sei sulla pagina 1di 29

- FAQ Sobre Perl

Introduo No acho que vou (principalmente no incio) criar a melhor FAQ do mundo sobre Perl. Mas tenho de comear por algum lugar, e escolhi as perguntas que me so feitas (j com alguma repetio). Se alguma das perguntas abaixo resolve o seu problema, timo, porque voc ganhou tempo (e eu tambm). Caso contrrio, voc pode me mandar um e-mail para acidwar@acidwar.com, e farei o melhor que puder para ajudar. Mas no espere muito. Principalmente, no espere pressa. Estou colaborando, e no trabalhando e sendo pago para resolver problemas com, ou a respeito de, Perl. pena, mas algumas pessoas ainda no distinguem estas duas coisas, e por mais que (de graa, com boa vontade e com uma enorme pacincia) a gente tente ajudar, sempre acham que temos obrigao de fazer mais e mais rpido. Infelizmente no posso. Meu chefe no deixa e, eu trabalhando para ele, tenho de obedecer. Qual a diferena entre CGI e Perl? Como posso testar um script em casa, antes de coloc-lo em um servidor? Qual a diferena entre CGI e Perl? Perl uma linguagem de programao, e CGI um protocolo de comunicao (um cdigo) atravs do qual o servidor HTTP (ou servidor web) intermedia a transferncia de informaes entre um programa (no mesmo computador que o servidor) e um cliente HTTP (o seu browser). No correto falar "eu quero um CGI que faa tal coisa", mas sim "eu quero um programa que use CGI e faa tal coisa", ou de maneira mais curta "eu quero um programa CGI que faa tal coisa" ou "eu quero um script que faa tal coisa". Um script no implica em CGI, mas scripts Perl (programas Perl) tornaram-se to comuns em se tratando de CGI, que falar script j quer dizer "programa CGI escrito em Perl". sempre bom lembrar que um programa CGI pode ser feito em qualquer linguagem usada no mesmo computador que o servidor, no s em Perl. Mas o status alcanado por Perl devido a suas qualidades para tarefas associados a CGI e por sua portabilidade. Como posso testar um script em casa, antes de coloc-lo em um servidor? Simulando o ambiente de Internet, que onde o script vai funcionar pr valer. Isso no difcil, e nem caro. Eu fao isso, e todos os programas necessrios foram gratuitos.

A simulao precisa de um cliente HTTP (o seu browser - se voc est vendo esta pgina, ento j o tem), um servidor HTTP (servidor web) e um interpretador Perl. A nica coisa especial fica a cargo do servidor, ele tem de saber usar o protocolo CGI, e nem todos o fazem. Tambm h variantes do CGI (como o WinCGI ou WinPerl, do Windows). Assim, nem todos os servidores servem para testarmos todos os tipos de scripts. Claro que o ideal que o servidor que se vai usar para testar seja o mesmo que vai ser usado na Internet, mas nem sempre isso possvel. Felizmente, Perl bastante portvel. Por exemplo: este site est em um servidor rodando SunOS - uma variao de Unix e servidor HTTP Apache. Em casa, at eu conseguir comprar um HD de 6 Gb, eu crio e comeo a testar meus scripts no sistema operacional (ru)Windows 95, e o servidor HTTP o Personal Web Server da Microsoft (Que j vem na maioria dos Windows. Para instalar, v no Painel de Controle, Rede, Adicionar, Servios, Microsoft...). Para manter a portabilidade, no uso nenhum recurso associado a uma plataforma especfica. Quer dizer que evito chamadas ao sistema. Por exemplo, um inocente $data = `date`; o suficiente para que o script se comporte diferente nos dois sistemas. O date diferente no DOS/Windows e no Unix, apesar de ter o mesmo nome. Aps instalar o servidor HTTP, voc deve identificar o diretrio onde os scripts devem ser colocados (normalmente eles no funcionam em qualquer lugar). No Apache h o diretrio cgibin, sob httpd, pronto para colocar scripts, e no Personal Web Server h o diretrio Scripts, sob Webshare, pronto para colocar os scripts. Mas dependendo, pode-se colocar em qualquer lugar do servidor. Infelizmente no h receita de bolo utilizvel em todos os casos. Por isso, leia bem a documentao que acompanha o servidor.

- Obtendo Perl Grtis

Fontes em C http://language.perl.com/info/software.html (UNIX) WinPerl MacPerl http://www.activestate.com/ (NT 3.51 e Win95)

http://www.iis.ee.ethz.ch/neeri/macintosh/perl.html (MAC)

- PARTEl I:

Introduo

Pr-Requisitos Avisos

- PARTE II:

O que Perl?

- PARTE III:

Executando um Script

- PARTE IV:

Executando um Script atravs de CGI

- PARTE V: Perl X Browser

Operadores lgicos Dados do formulrio Condies lgicas Input/Output Arrays Teste de contedo Outros comandos

-------------------------PARTE 1: Introduo

Perl (um acrnimo de "Practical Extraction and Report Language" - Linguagem Prtica para Extrao e Relatrio) uma linguagem de programao de alto nvel criada por Larry Wall. Ela descendente de C, mas tambm sofreu grandes influncias de vrias linguagens e ferramentas, tais como C++, sed, awk, gep e unix shell, tendo uma sintaxe um tanto familiar aos usurios destas linguagens.

As facilidades de Perl para manipulao de processos, arquivos e textos tornam essa linguagem particularmente interessante para tarefas que envolvem desenvolvimento rpido de prottipos, utilitrios e gerenciamento do sistema operacional, acesso a bancos de dados, redes, e programao para a world wide web.

Larry Wall tornou a distribuio de Perl gratuita desde o incio. Perl suportado por seus usurios. O ncleo (core) da linguagem, a biblioteca Perl padro (standard Perl library), os mdulos opcionais e a documentao so todos mantidos por voluntrios.

Pr-requisitos

Consideramos que o leitor deste tutorial satisfaz estes pr-requisitos:

1. Experincia bsica em programao (em qualquer linguagem) 2. Disponha de algum meio para se exercitar (possa usar Perl, tanto o interpretador sozinho como junto com um servidor web) 3. So desejveis, mas no essenciais, conhecimentos de HTML e CGI.

O primeiro pr-requisito justifica-se porque no vamos apresentar passos bsicos de programao. Alm do que achamos que Perl no deve ser usada como linguagem introdutria a programao. O segundo pr-requisito por acreditarmos que no se aprende

passivamente, mas sendo ativo com o objeto da aprendizagem. Em outras palavras, devemos aprender fazendo. Pondo a mo na massa.

Aviso

Este tutorial uma pequena introduo linguagem de programao Perl, voltado a programadores. Por ser simples, no muito rigoroso e possui muitas simplificaes, em nome da simplicidade e facilidade do entendimento. E por ter programadores como pblico alvo, as vrias simplificaes no iro atrapalhar, alm do que um programador pode com facilidade ir alm do escopo do tutorial.

-------------------------PARTE 2

O Que Perl?

Perl uma linguagem de programao de alto nvel criada por Larry Wall. Perl continua sendo desenvolvida por ele, com a ajuda de milhares de pesoas da comunidade Internet. Uma das formas de ajuda em port-la, da estar atualmente disponvel em praticamente qualquer plataforma de computador.

Por ter sido criada em mquinas unix, incorpora muito da filosofia e da funcionalidade deste sistema. Usurios de outros sistemas operacioanis, e que no tem experincia com unix, vo estranhar muitas coisas que Perl faz, pois no fazem sentido para eles. Mas acreditem, tem uma razo de ser.

Perl um acrnimo de "Practical Extraction and Report Language" (Linguagem Prtica para Extrao e Relatrio). Ela comeou como uma linguagem de script suplementar de um programa leitor de NEWS (USENET), tambm de Larry Wall.

Ela uma linguagem interpretada otimizada para manipulao de strings, entrada/sada e tarefas com o sistema operacional. Ela tem embutida muitas coisas que esto na seo 2 dos manuais do UNIX, o que o tornou muit popular entre administradores de sistemas. E incorpora elementos da sintaxe do bourne shell, csh, awk, sed, grep e C.

Perl tem ganho ateno com a exploso da World Wide Web como um modo rpido e efetivo de imitar programas que fornecem muita interatividade na web. E tem poucas das tradicionais limitaes que as linguagens interpretadas impem.

A atual verso de Perl 5. Apesar de ainda muito em uso, a verso 4 antiga (a ltima reviso, Perl 4.036, foi liberada em 1992) e no mais suportada pelos desenvolvedores originais. O mais recente Perl 5.003, e est sendo testada a verso 5.004.

O grande interesse em Perl hoje, aps o boom da Internet (graas a World Wide Web e interface grfica), porque esta a linguagem mais utilizada no mundo para a criao de pginas interativas na WWW. Da ser interessante um conhecimento, mesmo que superficial, de CGI, que o padro que define o conjunto mnimo de variveis do ambiente (environment) que pode ser usada por um servidor web para interagir com um programa, seja ele feito em Perl, em C ou em qualquer outra linguagem.

A suposio que fazemos, ento, de que a maioria dos leitores deste tutorial deve ser de usurios de PCs compatveis, e que o maior interesse em Perl para fazer scripts para tornar pginas na WWW mais interativas. Por isso muitos dos exemplos de uso de Perl devem ser apresentados como se o sistema usado fosse DOS e/ou Windows.

No estamos com isso menosprezando os usurios de outros sistemas, principalmente de unix, mas apenas sendo pragmticos e definindo um objetivo para o tutorial: uso de Perl junto a servidores web e com uso de CGI.

-------------------------PARTE 3

Executando um Script

Normalmente Perl usada para interpretar um script. Um script o que poderia ser chamado de programa (ou aplicativo). A diferena que comumente diferenciamos um programa compilado de um interpretado. Chamamos de programa o cdigo objeto (executvel) obtido

da compilao do cdigo fonte, e chamamos de script o cdigo fonte que diretamente interpretado, sem a gerao de um cdigo objeto. Deste modo so exemplos de scripts os programas Perl, e os arquivos de lote (batch files) do DOS (aqueles que tem a extenso .BAT).

Para executar um programa usando a linha de comando, digitamos o nome do programa e, quando necessrio, acrescentamos parmetros. Por exemplo, para listar o contedo do diretrio atual usamos algo como... % ls - no UNIX C:\> dir - no MS-DOS

Consideraremos o % como o prompt do UNIX, assim como C:\> o prompt do MS-DOS. Podemos modificar a forma como a informao mostrada, acrescentando parmetros. Por exemplo: % ls -alF C:\> dir /w/s

Nos dois sistemas (e isso no coincidncia, pois o MS-DOS por algum tempo convergiu para funcionar como o UNIX, da ter redirecionamento e canalizao, por exemplo - lembra de >, >>, < e | ?) um shell que apresenta o prompt, interpreta a linha de comando e chama programas. No caso do MS-DOS h alguns comandos internos no interpretador de comandos (como chamado o shell no MS-DOS - que o arquivo COMMAND.COM), tais como o comando dir, enquanto que no UNIX no h comandos internos, todos so programas chamados pelo shell. Mas nos dois casos h uma linguagem de script que o shell interpreta.

Quer dizer que podemos escrever programas com um editor de textos simples e fazer com que o shell o execute, sem precisarmos compil-lo. No DOS basta que o arquivo contendo o programa tenha a extenso .BAT, e j podemos faz-lo funcionar chamando-o pelo nome, na linha de comando. Por exemplo, considere o arquivo de nome LISTA.BAT com o contedo abaixo: C:\>type %1 | more

Para que ele funcione basta digitar na linha de comando C:\>LISTA arquivo.txt

Em UNIX, o script no precisa ter nenhuma extenso especfica. O sistema sabe que para execut-lo porque h um atributo que indica isso. Assim, considere o arquivo chamado lista (no UNIX deve-se prestar ateno porque as letras maisculas e minsculas so diferentes, enquanto que no MS-DOS no h distino) com o contedo abaixo: % cat $1 | more

Para que ele funcione, primeiro o transformamos em um executvel. No precisamos compillo, mas mudar os seus atributos... % chmod +x lista

E a partir da podemos cham-lo diretamente, como qualquer programa: % lista arquivo.txt

Nos dois casos arquivo.txt um arquivo com um texto no formatado, e o parmetro necessrio a este script (como chamado em unix), ou arquivo de lote (como chamado em MS-DOS). Vamos manter a nomenclatura do UNIX, e chamar de script os arquivo interpretados.

Lembre-se de que esse o modo de executar programas: cham-lo pelo nome (no MS-DOS opcional digitar a extenso) no prompt do sistema. Se o nome de um script (ou programa de lote, no MS-DOS) o shell (ou o interpretador de comandos, no MS-DOS) que o interpreta, linha por linha.

Tambm nos dois casos possvel usar um script com uma linguagem diferente da que o shell deve executar. Basta para isso que haja um interpretador especfico para essa nova linguagem. Nos dois casos, se h um programa chamado ling (LING.EXE ou LING.COM, no DOS) que um interpretador de uma linguagem de script, podemos faz-lo executar um script chamando-o e passando o nome do arquivo script como parmetro. Se o arquivo que contem o script tem o nome de scrpt.lin, podemos fazer o interpretador executar este script da seguinte forma: % ling scrpt.lin C:\>LING scrpt.lin

ou, dependendo de como o interpretador foi implementado, pode ser tambm % cat scrpt.lin | ling C:\>type scrpt.lin | LING

Perl funciona do modo mostrado acima. O shell no sabe interpretar os comandos Perl. Assim, um script Perl interpretado pelo programa perl (PERL.EXE, no MS-DOS). No deve haver um PERL.COM porque o interpretador Perl um arquivo grande, e no MS-DOS um programa com extenso .COM tem limite de tamanho para cdigo e dados em 64 kbytes menos 256 bytes normalmente insuficiente.

Para executar um sript Perl chamado scrpt.pl (a extenso .pl - ou .PL no DOS - indica scripts Perl) podemos usar % perl scrpt.pl C:\>PERL scrpt.pl

ou % cat scrpt.pl | perl C:\>type scrpt.pl | PERL

No UNIX, entretanto, se um arquivo texto (um script) executvel, pode-se usar um atalho, que colocar a primeira linha na forma #!programa

ou, se houverem argumentos #!programa argumentos

No deve haver espaos em branco do incio da linha at o caracter #, e podemos especificar o caminho (path) onde se encontra o programa. Por isso que nos scripts Perl encontramos uma primeira linha tal como #!/usr/local/bin/perl

Para executar o arquivo texto executvel (um script) apenas o chamamos % scrpt.pl

e o shell faz o resto, com a ajuda da primeira linha, como se tivssemos digitado % /usr/local/bin/perl scrpt.pl

E se houver parmetros, a primeira linha pode ser algo como #!/usr/local/bin/perl -u

que interpretado pelo shell como % /usr/local/bin/perl -u scrpt.pl

Recapitulando, para criar um script Perl:

1. Usamos um editor de textos simples (que grave texto no formatado) e digitamos nele o fonte do script 2. A primeira linha deve ter o caminho at o interpretador Perl 3. No unix, devemos mudar os atributos do arquivo, para torn-lo executvel (com chmod)

-------------------------PARTE 4

Executando um Script atravs de CGI

A tarefa mais comun hoje em que a linguagem Perl usada tornar uma pgina HTML (home pages) interativa. Por exemplo, processando informaes que um usurio passa para um servidor HTTP. As informaes so colocadas geralmente em um formulrio, que so enviadas para o servidor e este as transfere a um programa, que as processa. A seqncia inversa normalmente tambm ocorre.

chamado de CGI (Common Gateway Interface) o protocolo atravs 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. Se for em um PC compatvel usando DOS ou Windows, pode ser feito em Delphi ou Visual Basic, ou em qualquer outra linguagem. O nico requisito que saiba usar o protocolo CGI. Ao ser usado desse modo, chamaremos genericamente o programa ou o script de programa CGI.

Um script tambm pode ser usado. Se no DOS ou Windows, ser um programa de lote (.BAT). Se no Unix pode ser um script shell ou um script Perl. No Unix so mais usados scripts Perl e programas C ou C++.

O servidor HTTP encarrega-se de ativar o programa ou script e de passar para ele as informaes recebidas. A forma pela qual o CGI faz o servidor HTTP e o programa (ou script) conversarem usando variveis do sistema, com nomes pr-definidos. As variveis mais importantes so QUERY_STRING, que normalmente possui o pedido da informao desejada (query), e PATH_INFO, que permite que informaes extras sejam transmitidas para o servidor (como a localizao do programa CGI).

Quando um programa cliente (um browser, por exemplo) envia uma URL ao servidor HTTP, pode incluir um ponto de interrogao ? e a seguir uma string. A string pode ser acrescentada URL por um documento ISINDEX, por um formulrio, ou manualmente - em uma ligao (link). A string codificada no formato URL padro, isto , troca os espaos em branco por + e converte os caracteres especiais em seu cdigo hexadecimal precedido de %.

importante lembrar dessa codificao no programa CGI, para fazer a decodificao e restaurar a informao original.

Do browser para o programa CGI

Podemos enviar uma informao do programa cliente (por exemplo, um browser) para o programa CGI (sempre atravs do servidor) com um formulrio como o do exemplo a seguir:

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

O resultado ser:

Sua linguagem preferida:

Devemos mudar o nome do programa CGI (em negrito, no cdigo) deste modelo, colocando o nome do programa que vai ser usado. E podemos completar mais a URL no ACTION, especificando o servidor: Neste caso o programa CGI pode ser chamado a partir de qualquer pgina, mesmo em um servidor diferente. Outra mudana que pode ser feita quanto a extensao .pl, que explicitamente identifica o arquivo como um programa em Perl. A extenso pode ser (e muitas vezes o ) substituda por .cgi, ou at mesmo eliminada, como nos exemplos abaixo: No Unix isso no faz diferena, mas no DOS e/ou Windows faz. A o interpretador Perl deve ser explicitamente chamado, e o programa CGI passado para ele como um parmetro: O ponto de interrogao o separador entre o programa chamado e o primeiro argumento, uma vez que em uma URL no permitido o uso de espaos em branco. Caso hajam mais argumentos, eles sero separados por um &. No Exemplo 1 encontramos os elementos que contm a informao a ser enviada ao programa CGI. No caso a entrada (INPUT) de nome linguagem. Tambm podem ser usadas caixas de texto, botes de opo e botes de seleo. As duas outras entradas podem ser usadas como esto em todos os formulrios. Na pgina HTML so visveis sob a forma de botes. O primeiro provoca o envio das informaes para o servidor, e o segundo restaura o estado inicial do formulrio (comumente isso significa apagar todas as informaes). possvel colocarmos informaes que no sero mostradas na pgina HTML, mas que sero enviadas para o servidor. Para isso usamos o tipo HIDDEN de entrada: No Exemplo 2, abaixo, criamos um pequeno formulrio que ser enviado para o programa CGI chamado perl-form.pl, no Unix No Exemplo 1 encontramos os elementos que contm a informao a ser enviada ao programa CGI. No caso a entrada (INPUT) de nome linguagem. Tambm podem ser usadas caixas de texto, botes de opo e botes de seleo. As duas outras entradas podem ser usadas como esto em todos os formulrios. Na pgina HTML so visveis sob a forma de botes. O primeiro provoca o envio das informaes para o servidor, e o segundo restaura o estado inicial do formulrio (comumente isso significa apagar todas as informaes).

possvel colocarmos informaes que no sero mostradas na pgina HTML, mas que sero enviadas para o servidor. Para isso usamos o tipo HIDDEN de entrada:

<INPUT TYPE="HIDDEN" NAME="varivel" VALUE="contedo no visvel">

No Exemplo 2, abaixo, criamos um pequeno formulrio que ser enviado para o programa CGI chamado perl-form.pl, no Unix.

<FORM METHOD="POST" ACTION="/cgi-bin/perl-form.pl"> <INPUT TYPE="HIDDEN" NAME="origem" VALUE="Exemplo 2"> Seu nome: <INPUT TYPE="TEXT" NAME="nome" SIZE="30"><BR> Seu e-mail: <INPUT TYPE="TEXT" NAME="email" SIZE="30"><BR> <INPUT TYPE="SUBMIT" VALUE="Enviar"> <INPUT TYPE="RESET" VALUE="Apagar"> </FORM>

Exemplo 2

Na prximas sees veremos como o programa CGI envia informaes para o programa cliente (o browser, por exemplo) e como ele recebe e trata informaes recebidas de formulrios como o do Exemplo 2.

Outra maneira de chamar um programa CGI atravs de uma ligao (link):

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

Para qu colocar um programa CGI em uma ligao? Um exemplo de aplicao gerar uma pgina HTML em tempo de execuo. Uma pgina ativa, personalizada para aquela hora, ou com parte do contedo ajustado para atender ao browser exato de quem est acessando a pgina, ou ainda incluir uma informao especfica para os usurios de um determinado provedor. As possibilidades so interessantes. E tudo isso torna-se possvel porque o programa CGI pode ler informaes do sistema (como a data e a hora) e do pedido (request) feito ao servidor pelo programa cliente. Na prxima seo veremos um exemplo disso.

Do programa CGI para o browser

Tudo o que temos de fazer para que o contedo a sada padro do programa CGI escrito em Perl seja enviada para o programa cliente, mandar, antes de qualquer outra sada, o comando mgico:

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

O "Comando Mgico"

A partir da, tudo o que for direcionado para a sada padro (tudo o que no for direcionado para um arquivo) ser enviado para o browser.

Abaixo est o fonte do programa CGI usado no Exemplo 3, chamado perl-liga.pl:

#!/usr/bin/perl print "Content/type: text/html\n\n";

print "<HTML>";

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

print "<BODY>";

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

print "Funciona!<P>";

print "Agora volte, para continuar a ler o tutorial.";

print "</BODY>";

print "</HTML>";

Fonte do programa CGI do Exemplo 3

-------------------PARTE 5

Perl X Browser O browser no poder receber nenhuma linha de programao do PERL, pois o seu browser no entende PERL, portanto para se mandar informaes para a mquina cliente deve-se enviar somente cdigos HTML, assim o browser do usurio vai entender.

Preste muita ateno, pois isto muito importante para se fazer CGI's.

Quando o browser recebe um arquivo HTML, ele recebe tambm um cabealho. Este cabealho recebido da seguinte maneira:

"Content-type: text/html"

depois disto enviada uma linha em branco, para o browser saber que as prximas linhas o cdigo HTML

<html><body>...........

veja um exemplo completo:

Content-type: text/html

<HTML><BODY> oi </BODY></HTML>

Portanto assim que voc vai mandar as respostas para a mquina cliente. Aguarde e vers.

--------------------------------------------------------------------------------

Operadores lgicos

Operadores Lgicos + soma dois valores

- subtrai dois valores * multiplica dois valores / divide dois valores == compara se dois valores so iguais != compara se dois valores so diferentes <= compara se o valor enos ou igual < compara se o valor menor que o outro => compara se o valor maior ou igual > compara se o valor maior que o outro && operador AND ++ incrementa um valor a uma varivel -- decrementa um valor de uma varivel

--------------------------------------------------------------------------------

Dados do formulrio Quem j no se cadastrou em algum formulrio existente na internet, seja para baixar um software ou fazer compras. Ento para onde vai esses dados? simples os dados so encaminhados para um CGI onde este pega esses dados e grava em um banco de dados ou arquivo texto.

Como fazer isso em PERL ?

Existe um programinha em PERL chamado CGI-LIB.PL que facilitou muito a nossa vida. Este programinha tem que uma chamada em seu CGI para que ele pegue os dados do formulrio, como se fosse uma biblioteca.

Voc pode copiar este programinha que est no endereo http://www.acidwar.com/cgi/programacao/cgi-lib.zip, est com a extenso .txt , portanto copie para o bloco de notas ou qualquer editor de texto (caracteres ASCII) e salve como CGILIB.PL. note que a extenso ter que ser .PL . voc ter que colocar no diretrio lib do interpretador PERL.

Capturando dados de um formulrio

Agora vem a parte mais interessante. Primeiro voc deve criar um formulrio em HTML.

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

Explicao passo a passo:

<HTML><BODY><FORM ACTION="http://seu_server/cgi-bin/cadastro.pl" method="post">

A tag form contm os atributos ACTION onde voc coloca o caminho do CGI. O atributo METHOD sempre ser igual a POST.

<INPUT TYPE="TEXT" NAME="nome" SIZE="30">

esta tag serve para criar os objetos onde ser digitados os dados. o atributo NAME muito importante, pois o nome da varivel onde ser armazenado os dados. O CGI-LIB pegar essa varivel, cuidado por que case-sensitive, isto , sensvel maiusculas e minusculas.

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

Este o boto que enviar os dados. Os dados por sua vez so enviados da seguinte maneira http://seu_server/cgi-bin/cadastro.pl?nome="vagner+henrique"

O CGI PERL

A agora faca o seguinte abra um editor de texto (caracter ASCII), e escreva:

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

A explicao passo a passo do cdigo:

require 'cgi-lib.pl'; Esta linha de cdigo a chamada para o CGI que pega os dados.

&ReadParse(*input); Esta linha de cdigo serve para dizer que os valores sero passados para a vriavel input, que na verdade apenas uma referncia aos dados. Voc pode colocar outro nome no lugar do input.

print "Content-type:text/html \n\n"; Esta linha manda o cabealho para o browser do usurio. Note que no final tem o comando "\n", este comando server para pular uma linha, portanto pulamos uma linha e em seguida

mais uma para ficar aquela linha em branco. Todo comando PERL tem que ter ; (ponto e vrgula) no final.

print "<html><body bgcolor=\"white\">"; Esta linha manda os comandos HTML para o browser. Veja que as aspas da tag so precedidas de \ (barra). Essas barras servem para o interpretador entender que a aspa no faz parte da linguagem PERL.

print "O seu nome eh $input{nome}"; linha onde se envia o texto com o dado que foi passado pelo formulrio. Toda varivel do PERL precedida de $ (cifro), a varivel input tem o valor {nome} armazenado, que o valor de NAME do formulrio HTML. No caso $input apenas uma referncia ao dado do formulrio repassado pelo CGI-LIB.PL. UFA !!!!!!!

print "</body></html>"; Enfim a finalizao do cdigo HTML que ser enviado para a mquina cliente.

Esse programinha tem que ser gravado no diretrio onde se roda os CGI's no servidor.

--------------------------------------------------------------------------------

Condies lgicas Para quem j programa ou j programou em alguma linguagem esta parte vai ser fcil. Trata - se de uma estrutura muito importante em qualquer linguagem. Condies lgicas que fazem os programas tomarem um pouco de deciso, da maneira que o programador quiser, claro. Veja a expresso :

if (teste) {

Executar algo; } else { Executa outra coisa; }

Passo a passo :

if(teste) Essa linha verifica se a condio verdadeira. exemplo: 8>5 Se for verdadeiro executa o que estiver entre as { }.

else Essa linha verifica se a primeira condio o contrrio , isto falso, se for executa o que estiver abaixo entre {}.

Enquanto

$teste = 0; while($teste < 10) { print "$teste oi"; }

Passo a passo:

$teste = 0;

Define a varivel $teste como sendo igual a zero. Para definir uma varivel numrica no PERL, basta colocar o nome da varivel igual a 0 ($variavel = 0), e para definir uma varivel alfanmrica basta colocar o nome da varivel igual ao texto ($variavel = "vagner"). Lembrando que a varivel sempre vem precedida de $.

while($teste < 10) repete enquanto $teste for menor que 10.

print "$teste oi"; Imprime na tela o valor de $teste e a saudao oi.

Until

Faz loop at retornar verdadeiro

until(teste) { faz o bicho pegar }

For

incrementa uma varivel at que chegue a um limite.

for($var=1;$var<=5;$var=$var+1) { print "$var \n"; }

Passo a passo:

for($var=1; esta parte do cdigo define a varivel $var como sendo igual a 1. ;$var<=5; faz um loop at $var for igual a 5. ;$var=$var+1); incrementa $var + 1. pode-se usar tambm $var++.

Foreach

Repetio modificando valores de uma varivel.

foreach $teste (1,10,5,2) { print "$teste \n"; }

--------------------------------------------------------------------------------

Input/Output Neste parte voc ver como gravar dados em arquivos e ler os dados. O comando :

open(arq1,">texto.txt"); print arq1 "teste de PERL gravando dados\n"; close(arq1);

Passo a passo:

open(arq1,">texto.txt"); Est linha abre um arquivo para que grave alguma coisa. arq1 um apelido que se d ao arquivo texto.txt. o sinal > representa que o arquivo esta sendo aberto somente para gravao. A seguir a lista de parametrs:

< para se fazer Leitura > para escrever dados no arquivo e apagar o que j estava gravado. >> para se adicionar um texto no final do arquivo. +< para ler e escrever.

print arq1 "teste de PERL gravando dados\n"; Para escrever o texto no arquivo. "\n" pula a linha.

close(arq1) Fecha o arquivo. No se pode esquecer desta linha. O apelido no precisa ser necessariamente arq1, pode-se dar outro na abertura do arquivo.

--------------------------------------------------------------------------------

Arrays O que uma array ? como se fosse uma vriavel, s que com um conjunto de valores ordenados numericamente.

Uma array sempre vem precedida de @.

Definio de um array:

@arr = (10, 25, 40, 50);

O array indexado apartir do zero.cPara se acessar os valores deste array:

$arr[2] Pode-se usar $ para ler um valor do array. o resultado desta seria 40 (o primeiro elemento zero).

@arr[2] Tambm seria 40.

@arr = (1..10); Seria 1,2,3,4,5,6,7,8,9,10

$var = pop(@arr) Teramos o ltimo elemento.

push(@arr, 60); Acrescentamos o valor "60" no final da array @arr.

unshift(@arr, 60); Acrescentamos o valor "60" no nicio do array @arr.

shift(@arr) Tiramos um elemento do inicio do array.

--------------------------------------------------------------------------------

Teste de contedo Esta parte do tutorial mostrar alguns comandos para se testar se em uma varivel existe o que se procura. Tcnicas muito utilizadas em search de procura.

$var = "tutorial PERL";

Para verificar se nesta varivel existe a string to:

$teste = ($var=~/to/); Se existir retornar true ou 1.

Para verificar se existe qualquer um dos caracteres t, z e x:

$teste = ($var=~/[tzx]/; Retornar true mesmo que s exista o "t".

Para verificar se contm un espao em branco ou um escape:

$teste = ($var=~/\s/);

Para testar se contm "tu" e "to":

$teste = ($var=~/tu|to/);

Para saber se a string comea com tuto:

$teste = ($var=~/^tuto/);

Para ver se termina com vag:

$teste = ($var=~/vag$/); Como a varivel no termina com "vag" ento retorna false.

--------------------------------------------------------------------------------

Outros comandos Lista de vrios comandos teis:

exec "date"; Executa o comando date do sistema operacional.

system "date"; Tambm executa o comando date do sistema operacional.

$ENV{'PATH'} Retorna o caminho do arquivo atual.

$ENV{'REMOTE_HOST'} Retorna o IP da mquina cliente.

localtime()

Retorna a hora , a data e o dia da semana.

sleep 5 Faz uma pausa de 5 segundos

Potrebbero piacerti anche