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
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 |
|
LoadModule cgi_module modules/mod_cgi.so
ScriptAlias /cgi-bin/ "<PATH da sua pasta CGI>" |

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 |

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

|
$meuObjetoCGI = CGI->new; $meuObjetoCGI->tagHTML([parâmetros]); |

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:
$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.
print $cgi->p($chave . " => $ENV{$chave}");
}
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.
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
Ticursos.net - Thiago Glauco
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



