Vale isso:<br><br>&lt;code&gt;<br>$_=&quot;Estou feliz, passei em Matematica Discreta I, feliz!&quot;;<br>die&quot;Apareceu &quot;.(@_=/feliz/g).&quot; vezes...\n&quot;<br>&lt;/code&gt;<br><br>42<br><br><div class="gmail_quote">
On Dec 1, 2007 11:14 PM, Blabos de Blebe &lt;<a href="mailto:blabos@gmail.com">blabos@gmail.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Concordo.<br><br>Eng de Software deve vir em primeiro lugar, não por mim, mas por quem vai<br>dar manutenção no meu código depois, que poderá me chamar de elegante<br>ou porco, conforme o caso.<br><br>Em produção eu preferiria a versão da FAQ, que aliás também é pequena e
<br>por 3 caracteres não empatou com a minha:<div class="Ih2E3d"><br><br>&lt;code&gt;<br>$_=&quot;Estou feliz, passei em Matematica Discreta I, feliz!&quot;;<br></div>$c++while/feliz/g;print&quot;Apareceu $c vezes...\n&quot;
<br>&lt;/code&gt;<div><div></div><div class="Wj3C7c"><br><br>
<br><br><br><div class="gmail_quote">On Dec 1, 2007 11:02 PM, Marco A P D&#39;Andrade &lt;<a href="mailto:mdacwb@gmail.com" target="_blank">mdacwb@gmail.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

Gabriel,<br><br>Bem, já deu pra perceber que existe mais de uma maneira de se fazer<br>algo, e o pessoal se empolga em descobrir alternativas.<br><br>Mas lembre-se de se concentrar em qualquer uma que seja legível para<br>

vc, e resolva o seu problema.<br><br>Após algum tempo aprendendo as varias alternativas será interessante<br>se concentrar nas versões mais legiveis, pois versões de dificil<br>interpretação tendem a dificultar qualquer manutenção futura (em
<br>termos de sistemas).<br><br>Sds,<br>Marco Antonio<br><div><div></div><div><br>Em 01/12/07, Blabos de Blebe&lt;<a href="mailto:blabos@gmail.com" target="_blank">blabos@gmail.com</a>&gt; escreveu:<br>&gt; Breno, digamos que ao inves de $string a variavel fosse $s, vc teria 48.
<br>&gt;<br>&gt; Nesse caso eu apelaria para<br>&gt;<br>&gt; &lt;code&gt;<br>&gt; $_=&quot;Estou feliz, passei em Matematica Discreta I, feliz!&quot;;<br>&gt; $_=@_=/feliz/g;print&quot;Apareceu $_ vezes...\n&quot;<br>&gt; &lt;/code&gt;
<br>&gt;<br>&gt; E descartada a primeira linha, eu teria 44.<br>&gt; Tá valendo?<br>&gt;<br>&gt;<br>&gt;<br>&gt; On Dec 1, 2007 9:49 PM, breno &lt;<a href="mailto:breno@rio.pm.org" target="_blank">breno@rio.pm.org</a>&gt; wrote:
<br>&gt;<br>
&gt; &gt; Pra golfe, realmente. Mas como resposta para a pergunta do Gabriel<br>&gt; &gt; (que está aprendendo Perl ainda) acho que a melhor é a que está no<br>&gt; &gt; próprio FAQ do Perl, parecida com a versão do Lorn:
<br>&gt; &gt;<br>&gt; &gt; ------------------8&lt;-----------------<br>&gt; &gt;<br>&gt; &gt; $cont++ while $string =~ /feliz/g;<br>&gt; &gt;<br>&gt; &gt; ------------------8&lt;-----------------<br>&gt; &gt;<br>&gt; &gt; Agora, se estamos falando de golfe, aí vai a minha tacada!
<br>&gt; &gt;<br>&gt; &gt; (supondo a linha anterior como: my $string = &quot;Estou feliz, passei em<br>&gt; &gt; Matematica Discreta I, feliz!&quot;;<br>&gt; &gt; e a saida como tendo que ser &quot;apareceu X vezes...&quot; e quebrar linha no
<br>&gt; final)<br>&gt; &gt; $c=@b=$string=~/feliz/g;print&quot;apareceu $c vezes...\n&quot;<br>&gt; &gt;<br>&gt; &gt; 53 caracteres :-)<br>&gt; &gt;<br>&gt; &gt; obs: redução da versão do Fernando, que aparentemente esqueceu que a
<br>&gt; &gt; diferença entre o print e o printf é grande :-P<br>&gt; &gt;<br>&gt; &gt; []s<br>&gt; &gt;<br>&gt; &gt; -b<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; On Dec 1, 2007 6:31 PM, Fernando Oliveira &lt;
<a href="mailto:fernandocorrea@gmail.com" target="_blank">fernandocorrea@gmail.com</a>&gt;<br>&gt; wrote:<br>&gt; &gt; &gt; sim...mas ainda tenho menos caracteres...<br>&gt; &gt; &gt;<br>&gt; &gt; &gt; Em 01/12/07, Blabos de Blebe &lt; 
<a href="mailto:blabos@gmail.com" target="_blank">
blabos@gmail.com</a>&gt; escreveu:<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; Detalhe besta, como quase disse o fernando, m// no contexto de lista<br>&gt; &gt; &gt; retorna $1, $2, ..., $N,
<br>&gt; &gt; &gt; &gt; porém utilizando o modificador g, retorna todas as substrings que<br>&gt; &gt; &gt; combinaram. Depois é só<br>&gt; &gt; &gt; &gt; contar o tamanho da lista.<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; E, não, eu não sabia isso de cabeça, é que eu to nesse capítulo do
<br>&gt; &gt; &gt; livro... :p<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; O exemplo do livro diz algo parecido com<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &lt;code&gt;<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; my $string = &quot;Estou feliz, passei em Matematica Discreta I, feliz!&quot;;
<br>&gt; &gt; &gt; &gt; printf &quot;Apareceu %s vezes...\n&quot;, $c=@b=$string=~/feliz/g;<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &lt;/code&gt;<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; Na verdade era mais pra &lt;code&gt; scalar( @b = $string =~ /feliz/g );
<br>&gt; &gt; &gt; &lt;/code&gt;, que eu<br>&gt; &gt; &gt; &gt; achei longo, mas mais legível.<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; Espero ter ajudado<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt;
<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; On Dec 1, 2007 1:46 PM, Fernando Oliveira &lt; <a href="mailto:fernandocorrea@gmail.com" target="_blank">fernandocorrea@gmail.com</a>&gt;<br>&gt; &gt; &gt; wrote:
<br>&gt; &gt; &gt; &gt;
<br>&gt; &gt; &gt; &gt; &gt; o m//g em contexto de lista retorna uma lista com $1, $2, ..., $N.<br>&gt; Mas<br>&gt; &gt; &gt; em contexto estalar só retorna um booleano... uma solução com menor<br>&gt; &gt; &gt; performance, mas com menos caracteres q o for, seria:
<br>&gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &lt;code&gt;<br>&gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; my $string = &quot;Estou feliz, passei em Matematica Discreta I, feliz!&quot;;<br>&gt; &gt; &gt; &gt; &gt; printf &quot;Apareceu %s vezes...\n&quot;, scalar($string =~ s/(feliz)/$1/g);
<br>&gt; &gt; &gt; &gt; &gt; &lt;/code&gt;<br>&gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; Em 01/12/07, Marco A P D&#39;Andrade &lt; <a href="mailto:mdacwb@gmail.com" target="_blank">mdacwb@gmail.com
</a>
&gt; escreveu:<br>&gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; Hummm...<br>&gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; Posso estar enganado, mas acho que existem mais nuancias...
<br>&gt; &gt; &gt; &gt; &gt; &gt; (daqui não tenho como testar, e quero dar meu pitaco ;) )<br>&gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; Reforçando o contexto scalar da regex, com o argumento &quot;g&quot; já é
<br>&gt; feita<br>&gt; &gt; &gt; &gt; &gt; &gt; a pesquisa completa.<br>&gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; my $string = &#39;Estou feliz, passei em Matematica Discreta I,<br>&gt; feliz!&#39;;<br>

&gt; &gt; &gt; &gt; &gt; &gt; printf &quot;Apareceu %s vezes...\n&quot;, scalar($string =~ m/feliz/g);<br>&gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; Se fosse utilizado um foreach, em vez do while eu não teria tanta
<br>&gt; &gt; &gt; &gt; &gt; &gt; dúvida sobre o loop, pois seriam avaliados todos os elementos<br>&gt; &gt; &gt; &gt; &gt; &gt; retornados, já o while, não sei se na proxima interação ele refará<br>&gt; a<br>&gt; &gt; &gt; &gt; &gt; &gt; pesquisa...
<br>&gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; Ok... devia ter testado, mas queria dar o pitaco ;)<br>&gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; Sds,<br>&gt; &gt; &gt; &gt; &gt; &gt; Marco Antonio
<br>&gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; Em 01/12/07, Lorn&lt; <a href="mailto:lorn.br@gmail.com" target="_blank">lorn.br@gmail.com</a>&gt; escreveu:<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; Você estava checando só uma vez :P precisa checar até acabar
<br>&gt; toda a<br>&gt; &gt; &gt; frase :)<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; use warnings;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; use strict;
<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; my $cont;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; my $string = &#39;Estou feliz, passei em Matematica Discreta I,<br>&gt; feliz!&#39;;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &amp;aparece($string);
<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; sub aparece{<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &nbsp; my $frase = shift();<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &nbsp; while ($string =~ m/feliz/g){
<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &nbsp; &nbsp; $cont++;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &nbsp; };<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &nbsp; print &quot;Feliz apareceu $cont vezes\n&quot;;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; }<br>

&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; On Dec 1, 2007 11:41 AM, gabriel lima &lt;<br>&gt; <a href="mailto:gabriellima333@hotmail.com" target="_blank">gabriellima333@hotmail.com</a>&gt;<br>
&gt; &gt; &gt; wrote:
<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; Olá pessoal tudo bem?<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; Estava tentando criar uma sub-rotina simples apenas
<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; para estudo da linguagem Perl. Esta sub-rotina mostra<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; quantas vezes uma palavra aparece em uma string.<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; O problema é que ela só retorna 1, ou seja, fala que
<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; só acha esta palavra uma vez, mesmo tendo aparecido<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; repetida vezes na string, veja:<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; #! D:\Perl\bin\Perl.exe
<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; use warnings;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; use strict;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; my $cont;
<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; my $string = &#39;Estou feliz, passei em Matematica Discreta I,<br>&gt; &gt; &gt; feliz!&#39;;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &amp;aparece($string);<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;
<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; sub aparece{<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &nbsp; my $frase = shift();<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &nbsp; $cont++ if $string =~ m/feliz/;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &nbsp; print &quot;Feliz apareceu $cont vezes\n&quot;;
<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; }<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; Saída -&gt; Feliz apareceu 1 vezes<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; ________________________________
<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; Receba as últimas notícias do Brasil e do mundo direto no seu<br>&gt; &gt; &gt; Messenger! É<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; GRÁTIS! Assine já!<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;
<br>&gt; _______________________________________________<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; Rio-pm mailing list<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; <a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org
</a><br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; 
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt;
<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; --<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; Lindolfo &quot;Lorn&quot; Rodrigues<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; - <a href="http://www.slackwarezine.com.br" target="_blank">

www.slackwarezine.com.br</a><br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; - <a href="http://lornlab.org" target="_blank">http://lornlab.org</a><br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; - <a href="http://sao-paulo.pm.org" target="_blank">

http://sao-paulo.pm.org</a><br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; use Catalyst;<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; _______________________________________________<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; Rio-pm mailing list
<br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; <a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>&gt; &gt; &gt; &gt; &gt; &gt; &gt; <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm
</a><br>&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; &gt; _______________________________________________<br>&gt; &gt; &gt; &gt; &gt; &gt; Rio-pm mailing list<br>&gt; &gt; &gt; &gt; &gt; &gt; <a href="mailto:Rio-pm@pm.org" target="_blank">

Rio-pm@pm.org</a><br>&gt; &gt; &gt; &gt; &gt; &gt; <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>&gt; &gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt;
<br>&gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; --<br>&gt; &gt; &gt; &gt; &gt; []&#39;s Fernando<br>&gt; &gt; &gt; &gt; &gt; _______________________________________________<br>&gt; &gt; &gt; &gt; &gt; Rio-pm mailing list
<br>&gt; &gt; &gt; &gt; &gt; <a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>&gt; &gt; &gt; &gt; &gt; <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm
</a>
<br>&gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; _______________________________________________<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; Rio-pm mailing list<br>&gt; &gt; &gt; &gt; 
<a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>&gt; &gt; &gt; &gt; <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>&gt; &gt; &gt; &gt;
<br>&gt; &gt; &gt;
<br>&gt; &gt; &gt;<br>&gt; &gt; &gt;<br>&gt; &gt; &gt; --<br>&gt; &gt; &gt; []&#39;s Fernando<br>&gt; &gt; &gt; _______________________________________________<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; &gt; Rio-pm mailing list
<br>&gt; &gt; &gt; <a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>&gt; &gt; &gt; <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
&gt; &gt; &gt;<br>
&gt; &gt; _______________________________________________<br>&gt; &gt; Rio-pm mailing list<br>&gt; &gt; <a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>&gt; &gt; <a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">

http://mail.pm.org/mailman/listinfo/rio-pm</a><br>&gt; &gt;<br>&gt;<br>&gt;<br>&gt; _______________________________________________<br>&gt; Rio-pm mailing list<br>&gt; <a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org
</a><br>&gt; 
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>&gt;<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></blockquote></div><br>
</div></div></blockquote></div><br>