Aureliano,<div><br></div><div>Eu vi algo no seu código que não é um erro, e há controvérsias sobre ser boa ou má prática, varia um pouco com gosto do freguês, mas que eu pessoalmente gosto de fazer diferente. Acho que é um estilo melhor.</div>

<div><br></div><div>Ao invés de fazer (principalmente em loops), algo como:</div><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>for(...)</div><div>  if( deu certo )</div><div>    faz um lance</div>

<div>  else #deu errado</div><div>    mostra ou trata erro</div><div>  endif</div><div>endfor</div></blockquote><div><br></div><div>Eu geralmente prefiro fazer assim</div><div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">

<div><br class="Apple-interchange-newline">for(...)</div><div>  if( deu errado )</div><div>    mostra ou trata erro</div><div>    next    # ou die, depdende de como voce quer lidar com o erro</div><div>  elseif( deu outro lance errado )</div>

<div>    mostra ou trata</div><div>    next</div><div>  ... # tantas quantas validações forem necessárias</div><div>  endif</div><div>  # parâmetros desta iteração estão validados</div><div><br></div><div>  faz um lance</div>

<div>endfor</div></blockquote><div><br></div></div><div>Acho que dessa forma, você simplifica a leitura do código: 1) o que for erro você trata logo, e depois que passa daquele bloco de validações está ok e 2) visualmente faz até mais sentido: o código mais indentado no começo é a exceção, enquanto que a "regra" está apenas um nível de indentação depois do comando de loop.</div>

<div><br></div><div>my $two_cents;</div><div><br></div><div>Russo<br><br><div class="gmail_quote">2012/10/25 Aureliano Guedes <span dir="ltr"><<a href="mailto:guedes_1000@hotmail.com" target="_blank">guedes_1000@hotmail.com</a>></span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div dir="ltr">
Eu fiz de uma forma que deu certo, mas ficou feio e cheio de más praticas, mandando reguex em xml e tals.<br><br>Quero fazer de forma bonita com XPath e tals. Mas ainda estou em processo de entendet tudo isso.<br><br>Estou tentando pegar o primeiro link da lista de videos de um resultado de pesquisa do YouTube.<br>

Para isso estou ultilizando uma API do YouTube: <a href="https://developers.google.com/youtube/2.0/developers_guide_protocol_api_query_parameters#Searching_for_Videos" target="_blank">https://developers.google.com/youtube/2.0/developers_guide_protocol_api_query_parameters#Searching_for_Videos</a><br>

<br>Onde estão os erros fora tudo?? -> <a href="http://pastebin.com/T06Mi1Nx" target="_blank">http://pastebin.com/T06Mi1Nx</a><div class="im"><br><br>#!/usr/bin/env perl<br><br>use common::sense;<br></div>use WWW::Mechanize;<br>

use URI::Escape;<br>use HTML::TreeBuilder::XPath;<br><br>my $html = WWW::Mechanize->new(timeout=>100);<br><br>open IN, $ARGV[0] or die $!;<br><br>foreach (<IN>){<br>    s/\s+/\+/g;<br>    chomp;<br>    my $url = '<a href="https://gdata.youtube.com/feeds/api/videos?q=" target="_blank">https://gdata.youtube.com/feeds/api/videos?q=</a>' . uri_escape($_);<br>

    $html->get($url);<br>    if ($html->is_success){<br>        my $page = $html->content;<br>        $page =~ s/(\n\r|\r\n)|\r/\n/g;<br>        <br>        my $tree = HTML::TreeBuilder::XPath->new();<br>        <br>

        my $node = $tree->findenodes('/html/body//a[@href=(.*)]')->[0];<br>        <br>        print $node;<br>    }<br>    else {<br>        print "FAIL: " . $! . "\n";<br>    }<br>}<br>

<br><br><br><div><div></div>> Date: Thu, 25 Oct 2012 13:06:40 -0200<br>> From: <a href="mailto:breno@rio.pm.org" target="_blank">breno@rio.pm.org</a><div class="im"><br>> To: <a href="mailto:rio-pm@pm.org" target="_blank">rio-pm@pm.org</a><br>

> Subject: Re: [Rio-pm] HTML::Parse<br>> <br></div><div><div class="h5">> 2012/10/21 Aureliano Guedes <<a href="mailto:guedes_1000@hotmail.com" target="_blank">guedes_1000@hotmail.com</a>><br>> ><br>
> > Ola.<br>
> ><br>> > Eu estoiu tentando usar o WWW::Mechanize, mas não estou entendendo uma coisa.<br>> > Eu tenho um botão:<br>> ><br>> > <a href="/dl/347357664b655256724e/554545485125135/Fernando+E+Sorocaba+++++Tenso.mp3" rel="nofollow" title="Download Fernando E Sorocaba     Tenso.mp3!"><br>

> >         <img src="/images/download.jpg" width="95" height="25" alt="Baixar Fernando E Sorocaba     Tenso" style="border:0" /></a><br>> ><br>> ><br>

> > Como eu faço para clicar nele usando o metodo click_button? Como faço para setar esse botão?<br>> > Eu tentei:<br>> > $m->click_button(value=>/dl/347357664b655256724e/554545485125135/Fernando+E+Sorocaba+++++Tenso.mp3);<br>

> > Mas não da certo.<br>> ><br>> <br>> O seu botão não é um botão (<button> ou <input type="button">) e sim<br>> um link (<a>). O Mechanize sabiamente os diferencia, e você<br>

> provavelmente está procurando o método follow_link()<br>> <br>> <a href="https://metacpan.org/module/WWW::Mechanize#mech-follow_link-...-" target="_blank">https://metacpan.org/module/WWW::Mechanize#mech-follow_link-...-</a><br>

> <br>> Finalmente, se quiser aprender sobre XPath e Seletores CSS, recomendo<br>> os seguintes artigos:<br>> <br>> <a href="http://sao-paulo.pm.org/artigo/2010/utilizandoxpathparacriarwebspiders" target="_blank">http://sao-paulo.pm.org/artigo/2010/utilizandoxpathparacriarwebspiders</a><br>

> <a href="http://sao-paulo.pm.org/artigo/2011/ExtracaodedadoscomperlxpatheregexExportadoemODF" target="_blank">http://sao-paulo.pm.org/artigo/2011/ExtracaodedadoscomperlxpatheregexExportadoemODF</a><br>> <a href="http://sao-paulo.pm.org/artigo/2011/ScrapingfacilcomMojoliciousefeedsAtom" target="_blank">http://sao-paulo.pm.org/artigo/2011/ScrapingfacilcomMojoliciousefeedsAtom</a><br>

> (veja no final: guia de referência rápida para seletores CSS)<br>> <br>> ou ir direto na fonte:<br>> <br>> <a href="http://www.w3.org/TR/xpath/" target="_blank">http://www.w3.org/TR/xpath/</a><br>> <a href="http://www.w3.org/TR/CSS2/selector.html" target="_blank">http://www.w3.org/TR/CSS2/selector.html</a><br>

> <a href="http://www.w3.org/TR/css3-selectors/" target="_blank">http://www.w3.org/TR/css3-selectors/</a><br>> <br>> []s<br>> <br>> -b<br>> _______________________________________________<br>> Rio-pm mailing list<br>

> <a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>> <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br></div></div></div>                                     </div>

</div>
<br>_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Alexei "RUSSOZ" Znamensky | russoz EM gmail com | <a href="http://russoz.org" target="_blank">http://russoz.org</a><br>

GPG fingerprint = 42AB E78C B83A AE31 7D27  1CF3 C66F B5C7 71CA 9F3C<br><a href="http://www.flickr.com/photos/alexeiz" target="_blank">http://www.flickr.com/photos/alexeiz</a> | <a href="http://github.com/russoz" target="_blank">http://github.com/russoz</a><br>

"I don't know... fly casual!" -- Han Solo<br>
</div>