<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"><<a href="mailto:gabriel.vieira@gmail.com">gabriel.vieira@gmail.com</a>></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 <a<br>
href="qlqrcoisa" mais_atributos_aqui>. Sendo assim o match vai agrupar<br>
em $1 tudo que está entre <a href=" e ">, ou seja, o match só irá<br>
parar quando encontrar um "> e isso demora um pouco a acontecer, tanto<br>
que o seu retorno para $1 é imenso.<br>
<br>
Tente:<br>
---------------------8<---------------------<br>
<div class="Ih2E3d">print $1 for $busca=~ /<a href="http:\/\/(.+?)"/;<br>
</div>--------------------->8---------------------<br>
<br>
Ou:<br>
---------------------8<---------------------<br>
print $1 for $busca=~ /<a href="http:\/\/(.+?)".*?>/;<br>
--------------------->8---------------------<br>
<br>
Ou para ficar mais legível:<br>
---------------------8<---------------------<br>
print $1 for $busca =~ m#<a href="http://(.+?)".*?>#;<br>
--------------------->8---------------------<br>
<br>
Lembre-se que esse match retornará apenas 1 único resultado por ele<br>
não possuir o operador 'g' ao fim da instrução.<br>
<br>
Utilizando-se da opção 'g' 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. "Mas com o while ele não entraria<br>
em loop infinito já que sempre vai existir o match na string busca?".<br>
Se utilizarmos o operador 'c', não.<br>
<br>
Logo, teremos:<br>
---------------------8<---------------------<br>
print $1,$/ while $busca =~ m#<a href="http://(.+?)".*?>#gc;<br>
--------------------->8---------------------<br>
<br>
Uma última dica legal, caso queira gerar um array com todos os matchs<br>
bastaria o seguinte:<br>
---------------------8<---------------------<br>
my @matchs = $busca =~ m#<a href="http://(.+?)".*?>#g;<br>
---------------------8<---------------------<br>
<br>
Mais informações: perldoc perlop<br>
<br>
Abraços,<br>
<br>
2008/9/19 Daniel de Oliveira Mantovani <<a href="mailto:daniel.oliveira.mantovani@gmail.com">daniel.oliveira.mantovani@gmail.com</a>>:<br>
<div><div></div><div class="Wj3C7c">> Fiz o que você disse do while, e deu outro erro.<br>
><br>
> Error: no "print" mailcap rules found for type "text/x-perl"<br>
><br>
> Não tenho ideia do que seja "mailcap".<br>
><br>
><br>
> 2008/9/19 Daniel de Oliveira Mantovani <<a href="mailto:daniel.oliveira.mantovani@gmail.com">daniel.oliveira.mantovani@gmail.com</a>><br>
>><br>
>> #!/usr/bin/perl<br>
>><br>
>> use strict;<br>
>> use warnings;<br>
>> use WWW::Mechanize;<br>
>><br>
>> my $google = WWW::Mechanize->new();<br>
>> my $url =<br>
>> '<a href="http://www.google.com.br/search?hl=pt-BR&q=nasa&btnG=Pesquisa+Google&meta" target="_blank">http://www.google.com.br/search?hl=pt-BR&q=nasa&btnG=Pesquisa+Google&meta</a>';<br>
>> $google->get($url);<br>
>> my $busca = $google->content();<br>
>> print $1 for $busca=~ /<a href="http:\/\/(.+?)">/;<br>
>><br>
>> Desculpa pela demora.<br>
>> A coisa que não entra na minha cabeça é eu ponho print $1, e imprime tudo<br>
>> que não está entre os parênteses.<br>
>><br>
>> 2008/9/19 André Garcia Carneiro <<a href="mailto:andre.garcia.carneir@terra.com.br">andre.garcia.carneir@terra.com.br</a>><br>
>>><br>
>>> Daniel...<br>
>>><br>
>>><br>
>>> No while que eu enviei. Tira o 'm'. Esse é um problema. Mas devem ter<br>
>>> mais no código, então manda pra mim, se<br>
>>> puder é claro, caso contrário posta aqui. Não posso entrar no IRC agora,<br>
>>> mas assim q tiver uma brecha aqui no<br>
>>> meu trabalho eu te mando a correção. Prometo testar dessa vez...rsrsr!<br>
>>><br>
>>><br>
>>> Cheers!<br>
>>><br>
>>><br>
>>> ---------- Cabeçalho original -----------<br>
>>><br>
>>> 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>
>>> Para: "saopaulo-pm" <a href="mailto:saopaulo-pm@mail.pm.org">saopaulo-pm@mail.pm.org</a><br>
>>> Cópia:<br>
>>> Data: Fri, 19 Sep 2008 15:43:47 -0300<br>
>>> Assunto: Re: [SP-pm] use WWW::Mechanize<br>
>>><br>
>>> ><br>
>>> > Falha minha. Esqueci disso...<br>
>>> ><br>
>>> ><br>
>>> > E nao testei o código também.<br>
>>> ><br>
>>> ><br>
>>> > Sorry!<br>
>>> ><br>
>>> ><br>
>>> > ---------- Cabeçalho original -----------<br>
>>> ><br>
>>> > 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>
>>> > Para: <a href="mailto:saopaulo-pm@mail.pm.org">saopaulo-pm@mail.pm.org</a><br>
>>> > Cópia:<br>
>>> > Data: Fri, 19 Sep 2008 14:49:28 -0300<br>
>>> > Assunto: Re: [SP-pm] use WWW::Mechanize<br>
>>> ><br>
>>> > > Você pode fazer regexes com m/ regexp aqui / .<br>
>>> > ><br>
>>> > > Também pode com m{ .... } , m@ ..... @ , m( .... ) , etc..<br>
>>> > ><br>
>>> > > Mas se você tá usando m/ ..... / , o que acontece quando tem mais um<br>
>>> > > "/" no<br>
>>> > > meio da regex ? O perl vai achar que a regexp acabou ali. Então, ou<br>
>>> > > usa-se<br>
>>> > > outros delimitadores, ou se escapa a "/", com uma "\", pra ele não<br>
>>> > > achar que<br>
>>> > > a "/" terminou a regexp:<br>
>>> > ><br>
>>> > > m/<a href="http:\/\/(.+?)"/sig<br>
>>> > ><br>
>>> > > ou<br>
>>> > ><br>
>>> > > m{<a href="http://(.+?)"}sig<br>
>>> > ><br>
>>> > > ou até mesmo<br>
>>> > ><br>
>>> > > m;<a href="http://(.+?)";sig # se você tá participando de um concurso<br>
>>> > > de<br>
>>> > > código ofuscado :-)<br>
>>> > ><br>
>>> > > []s<br>
>>> > > Wendel<br>
>>> > ><br>
>>> > > 2008/9/19 Daniel de Oliveira Mantovani<br>
>>> > > <<a href="mailto:daniel.oliveira.mantovani@gmail.com">daniel.oliveira.mantovani@gmail.com</a>><br>
>>> > ><br>
>>> > > > while($string =~ m/< a href="http://(.+?)"/sig){<br>
>>> > > > print "\n".$1; #Agora vou pegar todos!<br>
>>> > > > }<br>
>>> > > ><br>
>>> > > ><br>
>>> > > ><br>
>>> > ><br>
>>> ><br>
>>> > --<br>
>>> > André Garcia Carneiro<br>
>>> > Developer(Perl/PHP)<br>
>>> > Member of "São Paulo Perl Mongers" - <a href="http://sao-paulo.pm.org" target="_blank">http://sao-paulo.pm.org</a><br>
>>> ><br>
>>> > _______________________________________________<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>
>>> ><br>
>>><br>
>>> --<br>
>>> André Garcia Carneiro<br>
>>> Developer(Perl/PHP)<br>
>>> Member of "São Paulo Perl Mongers" - <a href="http://sao-paulo.pm.org" target="_blank">http://sao-paulo.pm.org</a><br>
>>><br>
>>> _______________________________________________<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>
>><br>
>><br>
>><br>
>> --<br>
>> Daniel de Oliveira Mantovani<br>
>> "A sede pelo aprendizado é insaciável"<br>
>> <a href="http://mantovanihouse.blogspot.com/" target="_blank">http://mantovanihouse.blogspot.com/</a><br>
>> ------------------------------------------------------------<br>
><br>
><br>
><br>
> --<br>
> Daniel de Oliveira Mantovani<br>
> "A sede pelo aprendizado é insaciável"<br>
> <a href="http://mantovanihouse.blogspot.com/" target="_blank">http://mantovanihouse.blogspot.com/</a><br>
> ------------------------------------------------------------<br>
><br>
> _______________________________________________<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>
><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>
"Though we live in trying times, we're the ones who have to try"<br>
</div>