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