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.989 ]

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


Usando LinkExtor



O programa a seguir mostra o uso de outro módulo bacana de Web em Perl, o HTML::LinkExtor, que extrai os links de uma página exemplo.

use HTML::LinkExtor;
my $file = shift;
my $p = HTML::LinkExtor->new;
$p->parse_file($file);
my @links = $p->links;
foreach (@links) {
    print 'Type: ', shift @$_, " ";
    while (my ($name, $val) = splice(@$_, 0, 2)) {
        print " $name -> $val ";
    }
}

Damos uma página para ele extrair com os dados:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head><title>Test HTML Page</title>
<link rel=stylesheet type='text/css' href='style.css'></head>
<body background="back.gif">
<h1 ALIGN=center>test HTML Page</h1>
<p>This is the first paragraph.
It contains a <a href="http://www.perl.com/">link</a></p>
<p><font color="#0000FF">This</font> is the 2nd paragraph.
It contains an image - <img src="test.gif"></p>
<p>Here is an image used as a link<br>
<a href="http://www.pm.org"><img src="pm.gif"
lowsrc="pmsmall.gif"></a></p>
</body>
</html>

Veja sua saída:

Type: link
    href -> style.css
Type: body
    background -> back.gif
Type: a
    href -> http://www.perl.com/
Type: img
    src -> test.gif
Type: a
    href -> http://www.pm.org
Type: img
    src -> pm.gif
    lowsrc -> pmsmall.gif

Ele extraiu os links e mostrou o tipo de link "Type". Se você quiser apenas os links do "Type: a", o script fica da seguinte forma:

use HTML::LinkExtor;
my $file = shift;
my $p = HTML::LinkExtor->new(&check);
$p->parse_file($file);
my @links;
foreach (@links) {
    print 'Type: ', shift @$_, " ";
    while (my ($name, $val) = splice(@$_, 0, 2)) {
        print " $name -> $val ";
    }
}
sub check {
    push @links, [@_] if $_[0] eq 'a';
}

Página anterior     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

Ponteiros - Saindo de Pesadelos

Banco de dados orientados a documentos

Apache + PHP + MySQL + ftpd no OpenBSD

Bind: Explorando e evitando falhas

Usando OpenBSD como desktop

Leitura recomendada

A forma correta de se instalar módulos Perl

Trabalhando com arquivos no Perl

Catalyst Framework Perl (parte 1)

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

Configurando OTRS com PSGI/Plack e executando com Starman

  
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