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