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;