Introducción
Con este tutorial vamos a aprender a leer páginas HTML o cualquier documento por medio de HTTP.
Los módulos
Vamos a necesitar dos módulos:
use LWP::UserAgent;
use HTTP::Request;
Con el primero vamos a cambiar la manera con la cual nos vamos a identificar, y el segundo para pedir la página por medio de HTTP.
Pidiendo un documento HTTP
Después de haber declarado que queremos usar ese par de módulos, lo que vamos a hacer es decidir como queremos indentificarnos, es decir el nombre de nuestro "User Agent", y eso lo hacemos de la siguiente manera.
my $ua = LWP::UserAgent->new;
$ua->agent("Kidd 1.0 (http://perlenespanol.com/)");
El nombre del "agent" puede ser el que querramos, normalmente es algo con el cual nos puedan identificar.
Ahora vamos a inicializar una variable con la dirección HTTP que queremos leer.
my $url = "http://sitioweb.com/pagina.htm";
Ya que tenemos nuestra variable ahora si vamos a hacer el resto del trabajo:
my $req = HTTP::Request->new(GET => $url);
my $response = $ua->request($req);
my $content = $response->content();
Vamos a ver el código por partes.
La primera linea inicializa un nuevo objeto del módulo HTTP::Request, donde primero ponemos con que método queremos pedir el documento (lo más común es GET o POST), seguido por la variable de nuestro URL.
La segunda linea asigna el nuevo objeto junto con el "User Agent" que habíamos decidido hacer, por motivos de espacio y de tiempo no vay a dar detalles específicos de como funciona esto.
Finalmente la tercera linea asigna a la variable "$content", todo el contenido que se obtuvo del document, que en este caso sería el código HTML.
Esta variable es un string común y corriente así que lo más seguro es que querramos desplegarlo.
print "Content-type: text/html\n\n";
print $content;
En tutoriales futuros vamos a aprender a mandar formas por medio de perl, y a como descargar imagenes vía HTTP con perl.
Código Final
#!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
use LWP::UserAgent;
use HTTP::Request;
my $ua = LWP::UserAgent->new;
$ua->agent("Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)");
my $url = "http://baboonsoftware.com/";
my $req = HTTP::Request->new(GET => $url);
my $response = $ua->request($req);
my $content = $response->content();
print "Content-type: text/html\n\n";
print $content;