<div dir="ltr">e assim começa a lenta e dolorosa caminhada para o inferno do parse de markup languages...<br><br><div class="gmail_quote">2008/9/20 Gabriel Vieira <span dir="ltr">&lt;<a href="mailto:gabriel.vieira@gmail.com">gabriel.vieira@gmail.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Daniel,<br>
<br>
isso ocorre pelo simples motivo de existir nenhuma a tag &lt;a<br>
href=&quot;qlqrcoisa&quot; mais_atributos_aqui&gt;. Sendo assim o match vai agrupar<br>
em $1 tudo que está entre &lt;a href=&quot; e &quot;&gt;, ou seja, o match só irá<br>
parar quando encontrar um &quot;&gt; e isso demora um pouco a acontecer, tanto<br>
que o seu retorno para $1 é imenso.<br>
<br>
Tente:<br>
---------------------8&lt;---------------------<br>
<div class="Ih2E3d">print $1 for $busca=~ /&lt;a href=&quot;http:\/\/(.+?)&quot;/;<br>
</div>---------------------&gt;8---------------------<br>
<br>
Ou:<br>
---------------------8&lt;---------------------<br>
print $1 for $busca=~ /&lt;a href=&quot;http:\/\/(.+?)&quot;.*?&gt;/;<br>
---------------------&gt;8---------------------<br>
<br>
Ou para ficar mais legível:<br>
---------------------8&lt;---------------------<br>
print $1 for $busca =~ m#&lt;a href=&quot;http://(.+?)&quot;.*?&gt;#;<br>
---------------------&gt;8---------------------<br>
<br>
Lembre-se que esse match retornará apenas 1 único resultado por ele<br>
não possuir o operador &#39;g&#39; ao fim da instrução.<br>
<br>
Utilizando-se da opção &#39;g&#39; e do for ele ele irá retornar a $1 o valor<br>
do último match com sucesso a quantidade de vezes que os matchs<br>
obtiveram sucesso, no caso o link para a Folha On Line.<br>
<br>
Sendo assim indico o uso do while. &quot;Mas com o while ele não entraria<br>
em loop infinito já que sempre vai existir o match na string busca?&quot;.<br>
Se utilizarmos o operador &#39;c&#39;, não.<br>
<br>
Logo, teremos:<br>
---------------------8&lt;---------------------<br>
print $1,$/ while $busca =~ m#&lt;a href=&quot;http://(.+?)&quot;.*?&gt;#gc;<br>
---------------------&gt;8---------------------<br>
<br>
Uma última dica legal, caso queira gerar um array com todos os matchs<br>
bastaria o seguinte:<br>
---------------------8&lt;---------------------<br>
my @matchs = $busca =~ m#&lt;a href=&quot;http://(.+?)&quot;.*?&gt;#g;<br>
---------------------8&lt;---------------------<br>
<br>
Mais informações: perldoc perlop<br>
<br>
Abraços,<br>
<br>
2008/9/19 Daniel de Oliveira Mantovani &lt;<a href="mailto:daniel.oliveira.mantovani@gmail.com">daniel.oliveira.mantovani@gmail.com</a>&gt;:<br>
<div><div></div><div class="Wj3C7c">&gt; Fiz o que você disse do while, e deu outro erro.<br>
&gt;<br>
&gt; Error: no &quot;print&quot; mailcap rules found for type &quot;text/x-perl&quot;<br>
&gt;<br>
&gt; Não tenho ideia do que seja &quot;mailcap&quot;.<br>
&gt;<br>
&gt;<br>
&gt; 2008/9/19 Daniel de Oliveira Mantovani &lt;<a href="mailto:daniel.oliveira.mantovani@gmail.com">daniel.oliveira.mantovani@gmail.com</a>&gt;<br>
&gt;&gt;<br>
&gt;&gt; #!/usr/bin/perl<br>
&gt;&gt;<br>
&gt;&gt; use strict;<br>
&gt;&gt; use warnings;<br>
&gt;&gt; use WWW::Mechanize;<br>
&gt;&gt;<br>
&gt;&gt; my $google = WWW::Mechanize-&gt;new();<br>
&gt;&gt; my $url =<br>
&gt;&gt; &#39;<a href="http://www.google.com.br/search?hl=pt-BR&amp;q=nasa&amp;btnG=Pesquisa+Google&amp;meta" target="_blank">http://www.google.com.br/search?hl=pt-BR&amp;q=nasa&amp;btnG=Pesquisa+Google&amp;meta</a>&#39;;<br>

&gt;&gt; $google-&gt;get($url);<br>
&gt;&gt; my $busca = $google-&gt;content();<br>
&gt;&gt; print $1 for $busca=~ /&lt;a href=&quot;http:\/\/(.+?)&quot;&gt;/;<br>
&gt;&gt;<br>
&gt;&gt; Desculpa pela demora.<br>
&gt;&gt; A coisa que não entra na minha cabeça é eu ponho print $1, e imprime tudo<br>
&gt;&gt; que não está entre os parênteses.<br>
&gt;&gt;<br>
&gt;&gt; 2008/9/19 André Garcia Carneiro &lt;<a href="mailto:andre.garcia.carneir@terra.com.br">andre.garcia.carneir@terra.com.br</a>&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Daniel...<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; No while que eu enviei. Tira o &#39;m&#39;. Esse é um problema. Mas devem ter<br>
&gt;&gt;&gt; mais no código, então manda pra mim, se<br>
&gt;&gt;&gt; puder é claro, caso contrário posta aqui. Não posso entrar no IRC agora,<br>
&gt;&gt;&gt; mas assim q tiver uma brecha aqui no<br>
&gt;&gt;&gt; meu trabalho eu te mando a correção. Prometo testar dessa vez...rsrsr!<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Cheers!<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; ---------- Cabeçalho original -----------<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; De: saopaulo-pm-bounces+andre.garcia.carneir=<a href="http://terra.com.br" target="_blank">terra.com.br</a>@<a href="http://pm.org" target="_blank">pm.org</a><br>
&gt;&gt;&gt; Para: &quot;saopaulo-pm&quot; <a href="mailto:saopaulo-pm@mail.pm.org">saopaulo-pm@mail.pm.org</a><br>
&gt;&gt;&gt; Cópia:<br>
&gt;&gt;&gt; Data: Fri, 19 Sep 2008 15:43:47 -0300<br>
&gt;&gt;&gt; Assunto: Re: [SP-pm] use WWW::Mechanize<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; Falha minha. Esqueci disso...<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; E nao testei o código também.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; Sorry!<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; ---------- Cabeçalho original -----------<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; De: saopaulo-pm-bounces+andre.garcia.carneir=<a href="http://terra.com.br" target="_blank">terra.com.br</a>@<a href="http://pm.org" target="_blank">pm.org</a><br>
&gt;&gt;&gt; &gt; Para: <a href="mailto:saopaulo-pm@mail.pm.org">saopaulo-pm@mail.pm.org</a><br>
&gt;&gt;&gt; &gt; Cópia:<br>
&gt;&gt;&gt; &gt; Data: Fri, 19 Sep 2008 14:49:28 -0300<br>
&gt;&gt;&gt; &gt; Assunto: Re: [SP-pm] use WWW::Mechanize<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt; Você pode fazer regexes com m/ regexp aqui / .<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt; Também pode com m{ .... } , m@ ..... @ , &nbsp;m( .... ) , etc..<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt; Mas se você tá usando m/ ..... / , o que acontece quando tem mais um<br>
&gt;&gt;&gt; &gt; &gt; &quot;/&quot; no<br>
&gt;&gt;&gt; &gt; &gt; meio da regex ? O perl vai achar que a regexp acabou ali. Então, ou<br>
&gt;&gt;&gt; &gt; &gt; usa-se<br>
&gt;&gt;&gt; &gt; &gt; outros delimitadores, ou se escapa a &quot;/&quot;, com uma &quot;\&quot;, pra ele não<br>
&gt;&gt;&gt; &gt; &gt; achar que<br>
&gt;&gt;&gt; &gt; &gt; a &quot;/&quot; terminou a regexp:<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt; m/&lt;a href=&quot;http:\/\/(.+?)&quot;/sig<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt; ou<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt; m{&lt;a href=&quot;http://(.+?)&quot;}sig<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt; ou até mesmo<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt; m;&lt;a href=&quot;http://(.+?)&quot;;sig # se você tá participando de um concurso<br>
&gt;&gt;&gt; &gt; &gt; de<br>
&gt;&gt;&gt; &gt; &gt; código ofuscado :-)<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt; []s<br>
&gt;&gt;&gt; &gt; &gt; Wendel<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt; 2008/9/19 Daniel de Oliveira Mantovani<br>
&gt;&gt;&gt; &gt; &gt; &lt;<a href="mailto:daniel.oliveira.mantovani@gmail.com">daniel.oliveira.mantovani@gmail.com</a>&gt;<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt; &gt; while($string =~ m/&lt; a href=&quot;http://(.+?)&quot;/sig){<br>
&gt;&gt;&gt; &gt; &gt; &gt; &nbsp; &nbsp; print &quot;\n&quot;.$1; #Agora vou pegar todos!<br>
&gt;&gt;&gt; &gt; &gt; &gt; }<br>
&gt;&gt;&gt; &gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; --<br>
&gt;&gt;&gt; &gt; André Garcia Carneiro<br>
&gt;&gt;&gt; &gt; Developer(Perl/PHP)<br>
&gt;&gt;&gt; &gt; Member of &quot;São Paulo Perl Mongers&quot; - <a href="http://sao-paulo.pm.org" target="_blank">http://sao-paulo.pm.org</a><br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; _______________________________________________<br>
&gt;&gt;&gt; &gt; SaoPaulo-pm mailing list<br>
&gt;&gt;&gt; &gt; <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
&gt;&gt;&gt; &gt; <a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; --<br>
&gt;&gt;&gt; André Garcia Carneiro<br>
&gt;&gt;&gt; Developer(Perl/PHP)<br>
&gt;&gt;&gt; Member of &quot;São Paulo Perl Mongers&quot; - <a href="http://sao-paulo.pm.org" target="_blank">http://sao-paulo.pm.org</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; SaoPaulo-pm mailing list<br>
&gt;&gt;&gt; <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
&gt;&gt;&gt; <a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; Daniel de Oliveira Mantovani<br>
&gt;&gt; &quot;A sede pelo aprendizado é insaciável&quot;<br>
&gt;&gt; <a href="http://mantovanihouse.blogspot.com/" target="_blank">http://mantovanihouse.blogspot.com/</a><br>
&gt;&gt; ------------------------------------------------------------<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Daniel de Oliveira Mantovani<br>
&gt; &quot;A sede pelo aprendizado é insaciável&quot;<br>
&gt; <a href="http://mantovanihouse.blogspot.com/" target="_blank">http://mantovanihouse.blogspot.com/</a><br>
&gt; ------------------------------------------------------------<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; SaoPaulo-pm mailing list<br>
&gt; <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
&gt; <a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
&gt;<br>
<br>
<br>
<br>
--<br>
</div></div><font color="#888888">Gabriel Vieira<br>
</font><div><div></div><div class="Wj3C7c">_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Alexei Znamensky [russoz_gmail_com] [<a href="http://russoz.wordpress.com">russoz.wordpress.com</a>] [<a href="http://www.flickr.com/photos/alexeiz">www.flickr.com/photos/alexeiz</a>]<br>
&quot;Though we live in trying times, we&#39;re the ones who have to try&quot;<br>
</div>