Breno, digamos que ao inves de $string a variavel fosse $s, vc teria 48.<br><br>Nesse caso eu apelaria para<br><br><code><br>$_="Estou feliz, passei em Matematica Discreta I, feliz!";<br>$_=@_=/feliz/g;print"Apareceu $_ vezes...\n"
<br></code><br><br>E descartada a primeira linha, eu teria 44.<br>Tá valendo?<br><br><br><div class="gmail_quote">On Dec 1, 2007 9:49 PM, breno <<a href="mailto:breno@rio.pm.org">breno@rio.pm.org</a>> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Pra golfe, realmente. Mas como resposta para a pergunta do Gabriel<br>(que está aprendendo Perl ainda) acho que a melhor é a que está no
<br>próprio FAQ do Perl, parecida com a versão do Lorn:<br><br>------------------8<-----------------<br><br>$cont++ while $string =~ /feliz/g;<br><br>------------------8<-----------------<br><br>Agora, se estamos falando de golfe, aí vai a minha tacada!
<br><br>(supondo a linha anterior como: my $string = "Estou feliz, passei em<br>Matematica Discreta I, feliz!";<br>e a saida como tendo que ser "apareceu X vezes..." e quebrar linha no final)<br>$c=@b=$string=~/feliz/g;print"apareceu $c vezes...\n"
<br><br>53 caracteres :-)<br><br>obs: redução da versão do Fernando, que aparentemente esqueceu que a<br>diferença entre o print e o printf é grande :-P<br><br>[]s<br><font color="#888888"><br>-b<br></font><div><div></div>
<div class="Wj3C7c"><br>On Dec 1, 2007 6:31 PM, Fernando Oliveira <<a href="mailto:fernandocorrea@gmail.com">fernandocorrea@gmail.com</a>> wrote:<br>> sim...mas ainda tenho menos caracteres...<br>><br>> Em 01/12/07, Blabos de Blebe <
<a href="mailto:blabos@gmail.com">blabos@gmail.com</a>> escreveu:<br>> ><br>> ><br>> ><br>> > Detalhe besta, como quase disse o fernando, m// no contexto de lista<br>> retorna $1, $2, ..., $N,
<br>> > porém utilizando o modificador g, retorna todas as substrings que<br>> combinaram. Depois é só<br>> > contar o tamanho da lista.<br>> ><br>> > E, não, eu não sabia isso de cabeça, é que eu to nesse capítulo do
<br>> livro... :p<br>> ><br>> > O exemplo do livro diz algo parecido com<br>> ><br>> > <code><br>> ><br>> > my $string = "Estou feliz, passei em Matematica Discreta I, feliz!";
<br>> > printf "Apareceu %s vezes...\n", $c=@b=$string=~/feliz/g;<br>> ><br>> > </code><br>> ><br>> > Na verdade era mais pra <code> scalar( @b = $string =~ /feliz/g );<br>
> </code>, que eu<br>> > achei longo, mas mais legível.<br>> ><br>> > Espero ter ajudado<br>> ><br>> ><br>> ><br>> ><br>> ><br>> > On Dec 1, 2007 1:46 PM, Fernando Oliveira <
<a href="mailto:fernandocorrea@gmail.com">fernandocorrea@gmail.com</a>><br>> wrote:<br>> ><br>> > > o m//g em contexto de lista retorna uma lista com $1, $2, ..., $N. Mas<br>> em contexto estalar só retorna um booleano... uma solução com menor
<br>> performance, mas com menos caracteres q o for, seria:<br>> > ><br>> > > <code><br>> > ><br>> > > my $string = "Estou feliz, passei em Matematica Discreta I, feliz!";
<br>> > > printf "Apareceu %s vezes...\n", scalar($string =~ s/(feliz)/$1/g);<br>> > > </code><br>> > ><br>> > ><br>> > > Em 01/12/07, Marco A P D'Andrade <
<a href="mailto:mdacwb@gmail.com">mdacwb@gmail.com</a>> escreveu:<br>> > ><br>> > ><br>> > ><br>> > > > Hummm...<br>> > > ><br>> > > > Posso estar enganado, mas acho que existem mais nuancias...
<br>> > > > (daqui não tenho como testar, e quero dar meu pitaco ;) )<br>> > > ><br>> > > > Reforçando o contexto scalar da regex, com o argumento "g" já é feita<br>> > > > a pesquisa completa.
<br>> > > ><br>> > > > my $string = 'Estou feliz, passei em Matematica Discreta I, feliz!';<br>> > > > printf "Apareceu %s vezes...\n", scalar($string =~ m/feliz/g);<br>
> > > ><br>> > > > Se fosse utilizado um foreach, em vez do while eu não teria tanta<br>> > > > dúvida sobre o loop, pois seriam avaliados todos os elementos<br>> > > > retornados, já o while, não sei se na proxima interação ele refará a
<br>> > > > pesquisa...<br>> > > ><br>> > > > Ok... devia ter testado, mas queria dar o pitaco ;)<br>> > > ><br>> > > > Sds,<br>> > > > Marco Antonio
<br>> > > ><br>> > > > Em 01/12/07, Lorn< <a href="mailto:lorn.br@gmail.com">lorn.br@gmail.com</a>> escreveu:<br>> > > > > Você estava checando só uma vez :P precisa checar até acabar toda a
<br>> frase :)<br>> > > > ><br>> > > > ><br>> > > > > use warnings;<br>> > > > > use strict;<br>> > > > ><br>> > > > > my $cont;
<br>> > > > > my $string = 'Estou feliz, passei em Matematica Discreta I, feliz!';<br>> > > > > &aparece($string);<br>> > > > ><br>> > > > > sub aparece{
<br>> > > > > my $frase = shift();<br>> > > > > while ($string =~ m/feliz/g){<br>> > > > > $cont++;<br>> > > > > };<br>> > > > > print "Feliz apareceu $cont vezes\n";
<br>> > > > > }<br>> > > > ><br>> > > > > On Dec 1, 2007 11:41 AM, gabriel lima < <a href="mailto:gabriellima333@hotmail.com">gabriellima333@hotmail.com</a>><br>> wrote:
<br>> > > > > ><br>> > > > > ><br>> > > > > > Olá pessoal tudo bem?<br>> > > > > > Estava tentando criar uma sub-rotina simples apenas<br>> > > > > > para estudo da linguagem Perl. Esta sub-rotina mostra
<br>> > > > > > quantas vezes uma palavra aparece em uma string.<br>> > > > > > O problema é que ela só retorna 1, ou seja, fala que<br>> > > > > > só acha esta palavra uma vez, mesmo tendo aparecido
<br>> > > > > > repetida vezes na string, veja:<br>> > > > > ><br>> > > > > > #! D:\Perl\bin\Perl.exe<br>> > > > > ><br>> > > > > > use warnings;
<br>> > > > > > use strict;<br>> > > > > ><br>> > > > > > my $cont;<br>> > > > > > my $string = 'Estou feliz, passei em Matematica Discreta I,<br>
> feliz!';<br>> > > > > > &aparece($string);<br>> > > > > ><br>> > > > > > sub aparece{<br>> > > > > > my $frase = shift();<br>> > > > > > $cont++ if $string =~ m/feliz/;
<br>> > > > > > print "Feliz apareceu $cont vezes\n";<br>> > > > > > }<br>> > > > > ><br>> > > > > > Saída -> Feliz apareceu 1 vezes<br>
> > > > > ><br>> > > > > > ________________________________<br>> > > > > Receba as últimas notícias do Brasil e do mundo direto no seu<br>> Messenger! É<br>> > > > > GRÁTIS! Assine já!
<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>> > > > > ><br>> > > > ><br>> > > > ><br>> > > > >
<br>> > > > > --<br>> > > > > Lindolfo "Lorn" Rodrigues<br>> > > > > - <a href="http://www.slackwarezine.com.br" target="_blank">www.slackwarezine.com.br</a><br>> > > > > -
<a href="http://lornlab.org" target="_blank">http://lornlab.org</a><br>> > > > > - <a href="http://sao-paulo.pm.org" target="_blank">http://sao-paulo.pm.org</a><br>> > > > > use Catalyst;<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>> > > > ><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>> > > >
<br>> > ><br>> > ><br>> > ><br>> > > --<br>> > > []'s Fernando<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>> > ><br>> ><br>> >
<br>> > _______________________________________________<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>> ><br>><br>><br>><br>> --<br>> []'s Fernando<br></div></div>> _______________________________________________<br><div><div></div><div class="Wj3C7c">
> 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>><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></div></div></blockquote>
</div><br>