Módulos de Web no Perl

Neste artigo apresento alguns métodos para trabalhar com "tags" e "reg" em Perl de maneira simples e prática usando alguns módulos.

[ Hits: 16.997 ]

Por: C00L3R_ em 19/08/2008 | Blog: https://github.com/CoolerVoid


Introdução a alguns módulos Web



Vejo que sempre que alguém está estudando Perl já quer ir direto para sockets sem saber usar um "print" direito. Bem, sockets são legais, porém tem muitos outros módulos para se trabalhar no Perl. Eu mostrarei alguns deles.

Vamos fazer uma coisa simples. Primeiro, baixar o conteúdo de uma página -- usando LWP::Simple -- e depois salvar o seu conteúdo em um arquivo texto.

use LWP::Simple;
my $resultado = get('http://www.pagina_boba.com/index.html');
open(texto, ">>resultado.txt"); print texto $resultado; close(texto);
#você pode fazer a mesma coisa usando outro modulo como exemplo< br/> #usando IO::Socket...
my $socket = IO::Socket::INET->new(
        PeerAddr => "www.wiki.com",
        PeerPort => "80",
        Timeout => "7",
        Proto => "tcp"
    );
die "Não foi possível criar a socket " unless $socket;
if ($socket) {
    print $socket "GET /index.html HTTP/1.0 ";
    while (<$socket>) {
        print "$_";
    }
}
close($socket);

Abaixo, mais um exemplo, onde usaremos LWP::UserAgent e HTTP::Request.

use LWP::UserAgent;
print "pegando temperatura Brasil by C00L3R ";
print "Qual estado você quer ver a temperatura? ex sao_paulo ";
my $local=<STDIN>; chomp $local;
my $pagina="http://www1.folha.uol.com.br/folha/tempo/br-$local.shtml";
$agent = new LWP::UserAgent;
$request = HTTP::Request->new('GET',$pagina);
$result = $agent->request($request);
@result = $result->content();
open(RES,">","temperatura.txt");
print RES @result; close(RES); open(RES,"<","temperatura.txt");
@texto = <RES>; close(RES); unlink ("temperatura.txt");
foreach (@texto) {
    if ($_ =~ m/^<p><b>Temperatura:</b> (.*?)

/) {
        my $graus="$1";
        print "Local: $local ";
        print "Temperatura: $graus ";
    }
}

Nesse programa, um pouco mais complexo que os outros, não só o código-fonte da página é baixado como também salvo em um TXT e dele retirada a informação da temperatura, salva em uma variável usando regex (expressões regulares).

    Próxima página

Páginas do artigo
   1. Introdução a alguns módulos Web
   2. Usando LinkExtor
   3. Usando TokeParser
Outros artigos deste autor

Usando o NetBSD como desktop

BSD Sockets em linguagem C

Usando o PF - Packet Filter

Bind: Explorando e evitando falhas

Banco de dados orientados a documentos

Leitura recomendada

A forma correta de se instalar módulos Perl

Introdução a CGI com a RFC 3875

Enviando notificações do Nagios para o MSN

Módulos CPAN no Debian e distros GNU/Linux em geral

Impressão remota via WEB

  
Comentários
[1] Comentário enviado por removido em 19/08/2008 - 16:59h

muito bom .....
Tony posso te fazer umas perguntas,
o OpenBSD já está usando o driver nvidia ??????
E desktop 3d, algum dia vai ter ????????????

vlw ....

[2] Comentário enviado por Cooler_ em 19/08/2008 - 19:32h

fica dificil,
lembra da meta do openBSD "no blobs"
ou seja sem drivers proprietarios que não mostra a source he o caso da Nvidia e da ATI
OpenBSD da suporte para drivers Open Source como o drive da Ralink...
quanto ao desk 3d acho dificil viu soh se a Nvidia liberar source de um codigo fonte de um
dos seus muitos drivers, se tiver algum ja deve tar rolando no OpenBSD
abraço

[3] Comentário enviado por renato.leite em 19/08/2008 - 19:44h

bem legal cooler, agora voce ta la no boteco e aki no vivaolinux tbm... xD


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts