DevMedia
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login

Programando uma Intranet com Apache, MySQL e Perl (parte 1)

Do que eu vou falar aqui? Entre as funcionalidades do Perl está a capacidade de criar e gerenciar aplicativos Web. Para isto temos o CGI, DBI, o Catalyst entre outros que facilitam a vida do programador. Além de dezenas de milhares de módulos

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você poderia comentar o que não lhe agradou?

Confirmo meu voto negativo

Porque Perl?


Chega uma hora na vida que nossos programas Perl têm que sair da mera linha de comando. Não que haja problemas com a linha de comando. Mas algumas pessoas acabam não gostando muito dela. Seja por que a considerem feia, pouco amigável, entediante ou seja lá o que for.

Um dia seu chefe virá para você e dirá: "Eu queria que estas aplicações que você fez para obter informações dos servidores fiquem disponíveis para o pessoal do atendimento nível 1".

E você retruca: "Elas estão!".

O chefe termina: "O pessoal do nível 1 não está familiarizado com linha de comando! Quero uma coisa gráfica, fácil de usar e acessível de qualquer computador da empresa!".

Você poderia responder: "Coisa gráfica? Pede para equipe do Windows. Eles adoram gráficos, janelinhas, campainhas e coisas inúteis...". Mas você não quer dar esse gostinho para eles... o gostinho de pegarem seus programas em linha de comando, colocarem em uma caixinha colorida e levar toda a fama...

Então pensamos: "Vamos criar algo do tipo cliente/servidor? Banco de dados? Aplicativo local? Web?". O pessoal do Linux convoca um Brain Storm (no barzinho do Zé) para discutir o assunto. E surgem as ideias: Qt, PHP, MySQL, Postgree, Apache, shell script, Java, C...

Parece que teremos um programa monstro, daqueles que usam diversas linguagens de programação diferentes. PHP para a interface Web, shell script e C para realizar as tarefas de administração dos servidores... Sugeriram até um pouco de Java. Não haverá escapatória? Iríamos criar um monstrengo???

Aí alguém da sua equipe bate na mesa. As cervejas balançam. Caem algumas gotas sobre a mesa. E a salvação aparece: "Por que a gente não faz tudo em Perl? Podemos criar os módulos de gerência dos servidores, a interface Web e de quebra ainda podemos fazer os módulos do Apache. Não vamos gastar um dólar com licença de software e não precisamos instalar nada novo nos servidores Linux."

Do que eu vou falar aqui?

Entre as funcionalidades do Perl está a capacidade de criar e gerenciar aplicativos Web. Para isto temos o CGI, DBI, o Catalyst entre outros que facilitam a vida do programador. Além de dezenas de milhares de módulos no CPAN.org que estão lá para nos ajudar.

Este artigo vai apresentar uma introdução aos aplicativos CGI com Apache, Perl e MySQL. Independente de sua implementação em servidores Linux ou Windows. O Perl é isto: Liberdade de escolha. Inclusive pode-se usar Perl no IIS*. Mas isso é humilhar demais os programadores ASP. Em outros artigos eu irei explicar como utilizar o mod_perl e posteriormente o Catalyst. Mas nesta primeira parte vamos falar apenas do CGI.

* se quiser saber como fazer o IIS executar Perl acesse: ActivePerl | http://community.activestate.com/product/activeperl?page=2

Bom, obviamente você vai precisar de um sistema com Perl, MySQL e Apache instalados. Por enquanto estou usando as configurações padrão da instalação. Na minha instalação do Debian GNU/Linux, novinha aliás, não foi necessário fazer nenhuma modificação nas configurações padrão do Apache, Perl ou MySQL.
Mas como o Apache é um pouco diferente de distro para distro e o Apache do meu Debian é diferente do Apache onde eu trabalho que está num Red Hat, fica a dica para verificar as opções de configuração abaixo:
 
LoadModule cgi_module modules/mod_cgi.so
ScriptAlias /cgi-bin/ "<PATH da sua pasta CGI>"
 
que devem estar habilitadas.
 
Quanto ao MySQL você pode usar a linha de comando o MyAdmin, o QueryBrowser. Fique a vontade sobre como gerenciar e criar seus bancos. A versão que iremos usar é a: 5.0.51a
 

O Perl pode ser o ActiveState, Strawberry* ou aquele original da sua instalação. Apenas verifique se ele está atualizado. Qualquer versão acima da 5.6 está ótimo. É só digitar:
$ perl -v
e verificar a versão:
 

Agora que está tudo verificado, VAMOS PARA A AÇÃO!
 
 
* O Strawberry é uma distribuição do Perl para Windows. Assim como o MySQL e o Apache funcionam no Windows. Tudo que fizermos aqui funcionará corretamente no Windows desde que devidamente configurados. Se tiver necessidade de usar no Windows - shame on you - você deve alterar o she-bang dos scripts para:
#!c:\<PATH DA SUA INSTALAÇÃO DO PERL>\perl
 
 
Criando a primeira página Web com Perl

Abra o seu editor de textos e digite o código abaixo. Salve como "ambiente.pl" no diretório que está definido no item ScriptAlias do arquivo de configuração do seu Apache. Normalmente é uma pasta com o nome cgi-bin. No meu caso fica em /usr/lib/cgi-bin.
 
#!/usr/bin/perl
use warnings;
use strict;
use CGI; #Carrega o módulo CGI, que permite criarmos scripts cgi - claro!
my $cgi = CGI->new; #Criamos uma instância da classe CGI
print $cgi->header, # Primeiro criamos o Cabeçalho
      $cgi->start_html('Minha Primeira Página Perl'), # Iniciamos o Arquivo HTML
      $cgi->h1('BEM VINDO AO PERL'), # Cria a Tag <h1>TEXTO</h1>
      $cgi->p(scalar localtime), # Cria <p>Texto</p>
      $cgi->h3("Minhas Variáveis Locais:\n");
foreach my $chave (keys(%ENV)) {
   print $cgi->p($chave . " => $ENV{$chave}");
}
print $cgi->end_html; # Finalizamos o HTML
 
 
E veja o resultado no seu browser:
 

O nosso script primeiro cumprimenta o usuário, mostra a hora atual e apresenta as variáveis de ambiente. Bacana mas, antes de continuar vamos falar um pouco sobre o módulo CGI do Perl.
O módulo CGI é uma solução Perl completa e bem madura que pode receber e criar requisições HTTP. É uma solução com mais de dez anos de desenvolvimento e burilamento. Comecei está série de artigos com ela por que já está entre os principais e mais consagrados módulos do Perl.
Com ele podemos criar tags HTML em um estilo de programação orientado a objetos.
 
 
$meuObjetoCGI = CGI->new;
$meuObjetoCGI->tagHTML([parâmetros]);
 
A primeira vantagem desta forma de escrever códigos é a organização. O código é mais enxuto e legível que o HTML/XHTML tradicional. A outra vantagem é a possibilidade de criar páginas com estrutura dinâmica com pouco esforço. Mas a maior vantagem é poder levar o poder do Perl para suas aplicações Web.
Para ver uma característica prática, execute o script na linha de comando e veja a saída:
 

Perceba que na primeira linha invocamos strict e warning. Sempre use 'strict' e 'warning' em seus scripts Perl. Irá salvar muito tempo de trabalho com depuração. Depois nós carregamos o módulo CGI e criamos uma instância do mesmo:
 
$my $cgi = CGI->new
 
Utilizar o modo de orientação a objetos é uma boa prática, pois aplicações Web complexas exigem diversos módulos, e ficar usando alguns como objetos e outros como funções carregadas tornará seu código uma bagunça.
No trecho:
 
print $cgi->header,                      
      $cgi->start_html('Minha Primeira Página Perl'),
      $cgi->h1('BEM VINDO AO PERL'),  
      $cgi->p(scalar localtime),   
      $cgi->h3("Minhas Variáveis Locais:\n");

Estamos criando o cabeçalho HTML e criamos o corpo da página. A função 'localtime' retorna um array com o horário local, ou um string quando o contexto é escalar. A função scalar obriga a função localtime a retornar um escalar.
No penúltimo bloco de código:
 
foreach my $chave (keys(%ENV)) {
    print $cgi->p($chave . " => $ENV{$chave}");
}
 
Um hash é um tipo de variável do Perl que armazena valores relacionados a uma chave.
O hash %ENV é uma variável interna do Perl e carrega as variáveis de ambiente no formato:
%ENV = {Variável => valor_da_variável}. A função 'keys' retorna um array com todas as chaves do hash. Então, no nosso caso, retornará o nome de todas as variáveis de ambiente. E para cada uma delas - 'foreach' - ele irá mostrar no documento html o nome_da_variável => valor_va_variável.
E encerramos com:
 
print $cgi->end_html;
 
Moral da história

Fizemos aqui uma pequena apresentação dos scripts CGI com Perl. O módulo CGI permite que você crie documentos com qualquer tag HTML, processe formulários e crie páginas dinâmicas.
Apresentamos, para os que não são familiarizados com esta linguagem, o loop foreach, que executa uma repetição para cada item de um dado array. O conceito de hash - que pode ser entendido como um array associativo por nome ao invés de ordenado por número de posição. Pode ser comparado com o tipo dicionário de outras linguagens. Porém o intuito aqui não é apresentar ao Perl mas suas funcionalidades de programação Web.
No próximo artigo iremos criar formulários dinâmicos e nos conectar a um banco de dados MySQL.
 
Autor:
Thiago Glauco Sanchez
ITILv2, téc. Eletrônica e telecomunicações desde 1998,
Administrador e Operador de redes de Telecomunicações da Petrobras desde 2007.
Estudante de Gestão de Tecnologia da Informação
 
Bibliografia:


Analista de Sistemas, administrador de redes, Desenvolvedor. Certificação: ITIL Linux+ & LPI Gestor de segurança da informação site: www.ticursos.net. Cursos de C, Perl e Linux

O que você achou deste post?
Conhece a assinatura MVP?
Publicidade
Serviços

Mais posts