<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=iso-8859-1" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.6001.23515"></HEAD>
<BODY>
<DIV dir=ltr align=left><SPAN class=974174808-22082013><FONT color=#0000ff 
size=2 face=Arial>Hola Xavier,</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=974174808-22082013><FONT color=#0000ff 
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=974174808-22082013><FONT color=#0000ff 
size=2 face=Arial>moltes grącies pel codi,  l'estic mirant 
ara</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=974174808-22082013><FONT color=#0000ff 
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=974174808-22082013><FONT color=#0000ff 
size=2 face=Arial>Una consulta, una linea que no entenc del tot, la 
següent, exactament que fa? </FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=974174808-22082013><FONT color=#0000ff 
size=2 face=Arial></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=974174808-22082013>while ($html =~ 
/<FONT[^>]+>([^<]+)/g)</SPAN></DIV>
<DIV><FONT color=#0000ff size=2 face=Arial></FONT> </DIV>
<DIV><FONT color=#0000ff size=2 face=Arial><SPAN 
class=974174808-22082013>Enric</SPAN></FONT></DIV>
<DIV><FONT color=#0000ff size=2 face=Arial></FONT><FONT color=#0000ff size=2 
face=Arial></FONT><FONT color=#0000ff size=2 face=Arial></FONT><BR> </DIV>
<DIV dir=ltr lang=ca class=OutlookMessageHeader align=left>
<HR tabIndex=-1>
<FONT size=2 face=Tahoma><B>De:</B> Barcelona-pm 
[mailto:barcelona-pm-bounces+eagud.q=tv3.cat@pm.org] <B>En nom de </B>Xavier 
Noria<BR><B>Enviat:</B> dimecres, 21 de agost de 2013 23:04<BR><B>Per a:</B> 
Barcelona Perl Mongers<BR><B>Tema:</B> Re: [bcn-pm] RS: salutacions i 
consulta<BR></FONT><BR></DIV>
<DIV></DIV>
<DIV dir=ltr>Hola Enric,
<DIV><BR></DIV>
<DIV>En aquest problema podem simplificar una mica les coses observant com va el 
website. Per exemple, el formulari es nomes una manera de fer una peticio GET 
amb un cert query string, si fas un parell de proves veus com van els parametres 
i aixi t'estalvies simular la navegacio (tot i que tambe es podria fer).</DIV>
<DIV><BR></DIV>
<DIV>Pel que fa a la resposta, es un HTML prou senzill. Per a extreure dades de 
documents HTML arbitraris normalment es fan anar parsers HTML, pero en aquesta 
pagina d'estructura coneguda es mes que suficient al meu entendre fer anar una 
expressio regular.</DIV>
<DIV><BR></DIV>
<DIV>Tambe fa mes facil la feina saber que les dades METAR son com son, una 
tirallonga ASCII sense massa complicacio des d'aquest punt de vista.</DIV>
<DIV><BR></DIV>
<DIV>Et passo un script que podria ser un punt de partida, nomes treu les dades 
METAR per stdout, una fila per aeroport. Rep els codis d'aeroport com a 
arguments:</DIV>
<DIV><BR></DIV>
<DIV>    perl <A href="http://fetch_metar.pl">fetch_metar.pl</A> 
LEBL LEGE</DIV>
<DIV><BR></DIV>
<DIV>Naturalment si volguessis ajuda en modificar-lo no dubtis a escriure.</DIV>
<DIV><BR></DIV>
<DIV>Fa anar el modul LWP::UserAgent:</DIV>
<DIV><BR></DIV>
<DIV>    cpan install Bundle::LWP</DIV>
<DIV><BR></DIV>
<DIV>Espero que t'ajudi,</DIV>
<DIV><BR></DIV>
<DIV>Xavier</DIV>
<DIV><BR></DIV>
<DIV>
<DIV>use strict;</DIV>
<DIV>use warnings;</DIV>
<DIV><BR></DIV>
<DIV>use URI;</DIV>
<DIV>use LWP::UserAgent;</DIV>
<DIV><BR></DIV>
<DIV>my @airports = @ARGV;</DIV>
<DIV><BR></DIV>
<DIV>die <<EOS unless @airports;</DIV>
<DIV>Si us plau, passam'm algun codi d'aeroport, com ara</DIV>
<DIV><BR></DIV>
<DIV>    perl $0 LEBL LEGE</DIV>
<DIV><BR></DIV>
<DIV>EOS</DIV>
<DIV><BR></DIV>
<DIV>my $url = URI->new('<A 
href="http://aviationweather.gov/adds/metars'">http://aviationweather.gov/adds/metars'</A>);</DIV>
<DIV>$url->query_form(</DIV>
<DIV>    station_ids => join(' ', @airports),</DIV>
<DIV>    std_trans   => 'standard',</DIV>
<DIV>    chk_metars  => 'on',</DIV>
<DIV>    hoursStr    => 'most recent only',</DIV>
<DIV>);</DIV>
<DIV><BR></DIV>
<DIV>my $ua  = LWP::UserAgent->new;</DIV>
<DIV>my $res = $ua->get($url);</DIV>
<DIV><BR></DIV>
<DIV>if ($res->is_success) {</DIV>
<DIV>    my $html = $res->decoded_content;</DIV>
<DIV><BR></DIV>
<DIV>    while ($html =~ /<FONT[^>]+>([^<]+)/g) {</DIV>
<DIV>        print "$1\n";</DIV>
<DIV>    } </DIV>
<DIV>} else {</DIV>
<DIV>    die $res->status_line;</DIV>
<DIV>}</DIV></DIV></DIV></BODY></HTML>