[Rio-pm] Expressão Regular m//

Fernando Oliveira fernandocorrea em gmail.com
Sábado Dezembro 1 07:46:29 PST 2007


o m//g em contexto de lista retorna uma lista com $1, $2, ..., $N. Mas em
contexto estalar só retorna um booleano... uma solução com menor
performance, mas com menos caracteres q o for, seria:

<code>
my $string = "Estou feliz, passei em Matematica Discreta I, feliz!";
printf "Apareceu %s vezes...\n", scalar($string =~ s/(feliz)/$1/g);
</code>

Em 01/12/07, Marco A P D'Andrade <mdacwb em gmail.com> escreveu:
>
> Hummm...
>
> Posso estar enganado, mas acho que existem mais nuancias...
> (daqui não tenho como testar, e quero dar meu pitaco ;) )
>
> Reforçando o contexto scalar da regex, com o argumento "g" já é feita
> a pesquisa completa.
>
> my $string = 'Estou feliz, passei em Matematica Discreta I, feliz!';
> printf "Apareceu %s vezes...\n", scalar($string =~ m/feliz/g);
>
> Se fosse utilizado um foreach, em vez do while eu não teria tanta
> dúvida sobre o loop, pois seriam avaliados todos os elementos
> retornados, já o while, não sei se na proxima interação ele refará a
> pesquisa...
>
> Ok... devia ter testado, mas queria dar o pitaco ;)
>
> Sds,
> Marco Antonio
>
> Em 01/12/07, Lorn<lorn.br em gmail.com> escreveu:
> > Você estava checando só uma vez :P precisa checar até acabar toda a
> frase :)
> >
> >
> > use warnings;
> > use strict;
> >
> > my $cont;
> > my $string = 'Estou feliz, passei em Matematica Discreta I, feliz!';
> > &aparece($string);
> >
> > sub aparece{
> >   my $frase = shift();
> >   while ($string =~ m/feliz/g){
> >     $cont++;
> >   };
> >   print "Feliz apareceu $cont vezes\n";
> > }
> >
> > On Dec 1, 2007 11:41 AM, gabriel lima <gabriellima333 em hotmail.com>
> wrote:
> > >
> > >
> > > Olá pessoal tudo bem?
> > > Estava tentando criar uma sub-rotina simples apenas
> > > para estudo da linguagem Perl. Esta sub-rotina mostra
> > > quantas vezes uma palavra aparece em uma string.
> > > O problema é que ela só retorna 1, ou seja, fala que
> > > só acha esta palavra uma vez, mesmo tendo aparecido
> > > repetida vezes na string, veja:
> > >
> > > #! D:\Perl\bin\Perl.exe
> > >
> > > use warnings;
> > > use strict;
> > >
> > > my $cont;
> > > my $string = 'Estou feliz, passei em Matematica Discreta I, feliz!';
> > > &aparece($string);
> > >
> > > sub aparece{
> > >   my $frase = shift();
> > >   $cont++ if $string =~ m/feliz/;
> > >   print "Feliz apareceu $cont vezes\n";
> > > }
> > >
> > > Saída -> Feliz apareceu 1 vezes
> > >
> > > ________________________________
> > Receba as últimas notícias do Brasil e do mundo direto no seu Messenger!
> É
> > GRÁTIS! Assine já!
> > > _______________________________________________
> > > Rio-pm mailing list
> > > Rio-pm em pm.org
> > > http://mail.pm.org/mailman/listinfo/rio-pm
> > >
> >
> >
> >
> > --
> > Lindolfo "Lorn" Rodrigues
> > - www.slackwarezine.com.br
> > - http://lornlab.org
> > - http://sao-paulo.pm.org
> > use Catalyst;
> > _______________________________________________
> > Rio-pm mailing list
> > Rio-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/rio-pm
> >
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>



-- 
[]'s Fernando
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/rio-pm/attachments/20071201/b0080fb4/attachment.html 


Mais detalhes sobre a lista de discussão Rio-pm