From shonorio em gmail.com Sat Dec 1 02:59:34 2007 From: shonorio em gmail.com (Solli Honorio) Date: Sat, 1 Dec 2007 08:59:34 -0200 Subject: [Rio-pm] detectando arquivos abertos In-Reply-To: <6f39b0390711301905q37c93291y3cf1db17cb4390ec@mail.gmail.com> References: <6f39b0390711301905q37c93291y3cf1db17cb4390ec@mail.gmail.com> Message-ID: <12d1f4ee0712010259i1fcb6012w427035a6513f3f1c@mail.gmail.com> Não existe função built-in no Perl para isto, alias eu acredito que em nenhuma linguagem. Isto depende muito do sistemas operacional, para linux temos http://search.cpan.org/~jstowe/Linux-Fuser-1.4/lib/Linux/Fuser.pm, para Windows eu não conheço nada, ainda. Solli M. Honório On Dec 1, 2007 1:05 AM, Pedro Henrique wrote: > Amigos, > > estou meio empacado num problema que deve ser idiota, mas sabem como é... > > Dá pra saber (com Perl) se um arquivo está aberto ou não? > > Sei que isso é muito dependente de sistema operacional, mas de repente > alguém já teve esse tipo de problema e pode me ajudar.Procurei nos testes > de arquivos (-X) mas não achei nada... > > Vlw, > > PH > > > _______________________________________________ > Rio-pm mailing list > Rio-pm em pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > -- "o animal satisfeito dorme". - Guimarães Rosa -------------- Próxima Parte ---------- Um anexo em HTML foi limpo... URL: http://mail.pm.org/pipermail/rio-pm/attachments/20071201/5e86d18a/attachment.html From gabriellima333 em hotmail.com Sat Dec 1 05:41:59 2007 From: gabriellima333 em hotmail.com (gabriel lima) Date: Sat, 1 Dec 2007 16:41:59 +0300 Subject: [Rio-pm] =?iso-8859-1?q?Express=E3o_Regular_m//?= Message-ID: 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 com Alertas MSN! É GRÁTIS! http://alertas.br.msn.com/ -------------- Próxima Parte ---------- Um anexo em HTML foi limpo... URL: http://mail.pm.org/pipermail/rio-pm/attachments/20071201/ea718646/attachment.html From lorn.br em gmail.com Sat Dec 1 05:59:22 2007 From: lorn.br em gmail.com (Lorn) Date: Sat, 1 Dec 2007 11:59:22 -0200 Subject: [Rio-pm] =?iso-8859-1?q?Express=E3o_Regular_m//?= In-Reply-To: References: Message-ID: 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 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; -------------- Próxima Parte ---------- Um anexo em HTML foi limpo... URL: http://mail.pm.org/pipermail/rio-pm/attachments/20071201/cbfa120f/attachment.html From mdacwb em gmail.com Sat Dec 1 06:51:07 2007 From: mdacwb em gmail.com (Marco A P D'Andrade) Date: Sat, 1 Dec 2007 12:51:07 -0200 Subject: [Rio-pm] detectando arquivos abertos In-Reply-To: <12d1f4ee0712010259i1fcb6012w427035a6513f3f1c@mail.gmail.com> References: <6f39b0390711301905q37c93291y3cf1db17cb4390ec@mail.gmail.com> <12d1f4ee0712010259i1fcb6012w427035a6513f3f1c@mail.gmail.com> Message-ID: <42dcdd750712010651n6b8bfe7br82df60dff1f90a43@mail.gmail.com> Mas, obviamente dependendo de seu SO, vc pode utilizar mecanismos como flock, desde que todos os aplicativos fazam tal utilização. http://perldoc.perl.org/functions/flock.html Se nos passar mais detalhes, podemos opinar sobre os caminhos possíveis. Sds, Marco Antonio Em 01/12/07, Solli Honorio escreveu: > Não existe função built-in no Perl para isto, alias eu acredito que em > nenhuma linguagem. Isto depende muito do sistemas operacional, para linux > temos > http://search.cpan.org/~jstowe/Linux-Fuser-1.4/lib/Linux/Fuser.pm, > para Windows eu não conheço nada, ainda. > > Solli M. Honório > > > On Dec 1, 2007 1:05 AM, Pedro Henrique < phikeda em gmail.com> wrote: > > > > Amigos, > > > > estou meio empacado num problema que deve ser idiota, mas sabem como é... > > > > Dá pra saber (com Perl) se um arquivo está aberto ou não? > > > > Sei que isso é muito dependente de sistema operacional, mas de repente > alguém já teve esse tipo de problema e pode me ajudar.Procurei nos testes de > arquivos (-X) mas não achei nada... > > > > Vlw, > > > > PH > > > > > > _______________________________________________ > > Rio-pm mailing list > > Rio-pm em pm.org > > http://mail.pm.org/mailman/listinfo/rio-pm > > > > > > -- > "o animal satisfeito dorme". - Guimarães Rosa > _______________________________________________ > Rio-pm mailing list > Rio-pm em pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > From mdacwb em gmail.com Sat Dec 1 06:55:16 2007 From: mdacwb em gmail.com (Marco A P D'Andrade) Date: Sat, 1 Dec 2007 12:55:16 -0200 Subject: [Rio-pm] =?iso-8859-1?q?Express=E3o_Regular_m//?= In-Reply-To: References: Message-ID: <42dcdd750712010655y3f5fb31el4f15b93cdbcfdf25@mail.gmail.com> 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 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 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 > From fernandocorrea em gmail.com Sat Dec 1 07:46:29 2007 From: fernandocorrea em gmail.com (Fernando Oliveira) Date: Sat, 1 Dec 2007 13:46:29 -0200 Subject: [Rio-pm] =?iso-8859-1?q?Express=E3o_Regular_m//?= In-Reply-To: <42dcdd750712010655y3f5fb31el4f15b93cdbcfdf25@mail.gmail.com> References: <42dcdd750712010655y3f5fb31el4f15b93cdbcfdf25@mail.gmail.com> Message-ID: 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: my $string = "Estou feliz, passei em Matematica Discreta I, feliz!"; printf "Apareceu %s vezes...\n", scalar($string =~ s/(feliz)/$1/g); Em 01/12/07, Marco A P D'Andrade 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 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 > 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 From blabos em gmail.com Sat Dec 1 10:16:43 2007 From: blabos em gmail.com (Blabos de Blebe) Date: Sat, 1 Dec 2007 16:16:43 -0200 Subject: [Rio-pm] =?iso-8859-1?q?Express=E3o_Regular_m//?= In-Reply-To: References: <42dcdd750712010655y3f5fb31el4f15b93cdbcfdf25@mail.gmail.com> Message-ID: <179354400712011016p47447619vc69ed45318b6e7af@mail.gmail.com> Detalhe besta, como quase disse o fernando, m// no contexto de lista retorna $1, $2, ..., $N, porém utilizando o modificador g, retorna todas as substrings que combinaram. Depois é só contar o tamanho da lista. E, não, eu não sabia isso de cabeça, é que eu to nesse capítulo do livro... :p O exemplo do livro diz algo parecido com my $string = "Estou feliz, passei em Matematica Discreta I, feliz!"; printf "Apareceu %s vezes...\n", $c=@b=$string=~/feliz/g; Na verdade era mais pra scalar( @b = $string =~ /feliz/g ); , que eu achei longo, mas mais legível. Espero ter ajudado On Dec 1, 2007 1:46 PM, Fernando Oliveira wrote: > 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: > > > my $string = "Estou feliz, passei em Matematica Discreta I, feliz!"; > printf "Apareceu %s vezes...\n", scalar($string =~ s/(feliz)/$1/g); > > > 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 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 > _______________________________________________ > Rio-pm mailing list > Rio-pm em pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > -------------- Próxima Parte ---------- Um anexo em HTML foi limpo... URL: http://mail.pm.org/pipermail/rio-pm/attachments/20071201/78fad3b7/attachment.html From fernandocorrea em gmail.com Sat Dec 1 13:31:16 2007 From: fernandocorrea em gmail.com (Fernando Oliveira) Date: Sat, 1 Dec 2007 19:31:16 -0200 Subject: [Rio-pm] =?iso-8859-1?q?Express=E3o_Regular_m//?= In-Reply-To: <179354400712011016p47447619vc69ed45318b6e7af@mail.gmail.com> References: <42dcdd750712010655y3f5fb31el4f15b93cdbcfdf25@mail.gmail.com> <179354400712011016p47447619vc69ed45318b6e7af@mail.gmail.com> Message-ID: sim...mas ainda tenho menos caracteres... Em 01/12/07, Blabos de Blebe escreveu: > > Detalhe besta, como quase disse o fernando, m// no contexto de lista > retorna $1, $2, ..., $N, > porém utilizando o modificador g, retorna todas as substrings que > combinaram. Depois é só > contar o tamanho da lista. > > E, não, eu não sabia isso de cabeça, é que eu to nesse capítulo do > livro... :p > > O exemplo do livro diz algo parecido com > > > my $string = "Estou feliz, passei em Matematica Discreta I, feliz!"; > printf "Apareceu %s vezes...\n", $c=@b=$string=~/feliz/g; > > > > Na verdade era mais pra scalar( @b = $string =~ /feliz/g ); > , que eu > achei longo, mas mais legível. > > Espero ter ajudado > > > > On Dec 1, 2007 1:46 PM, Fernando Oliveira > wrote: > > > 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: > > > > > > my $string = "Estou feliz, passei em Matematica Discreta I, feliz!"; > > printf "Apareceu %s vezes...\n", scalar($string =~ s/(feliz)/$1/g); > > > > > > 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 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 > > _______________________________________________ > > 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/cbdb6090/attachment.html From breno em rio.pm.org Sat Dec 1 15:49:42 2007 From: breno em rio.pm.org (breno) Date: Sat, 1 Dec 2007 20:49:42 -0300 Subject: [Rio-pm] =?iso-8859-1?q?Express=E3o_Regular_m//?= In-Reply-To: References: <42dcdd750712010655y3f5fb31el4f15b93cdbcfdf25@mail.gmail.com> <179354400712011016p47447619vc69ed45318b6e7af@mail.gmail.com> Message-ID: Pra golfe, realmente. Mas como resposta para a pergunta do Gabriel (que está aprendendo Perl ainda) acho que a melhor é a que está no próprio FAQ do Perl, parecida com a versão do Lorn: ------------------8<----------------- $cont++ while $string =~ /feliz/g; ------------------8<----------------- Agora, se estamos falando de golfe, aí vai a minha tacada! (supondo a linha anterior como: my $string = "Estou feliz, passei em Matematica Discreta I, feliz!"; e a saida como tendo que ser "apareceu X vezes..." e quebrar linha no final) $c=@b=$string=~/feliz/g;print"apareceu $c vezes...\n" 53 caracteres :-) obs: redução da versão do Fernando, que aparentemente esqueceu que a diferença entre o print e o printf é grande :-P []s -b On Dec 1, 2007 6:31 PM, Fernando Oliveira wrote: > sim...mas ainda tenho menos caracteres... > > Em 01/12/07, Blabos de Blebe escreveu: > > > > > > > > Detalhe besta, como quase disse o fernando, m// no contexto de lista > retorna $1, $2, ..., $N, > > porém utilizando o modificador g, retorna todas as substrings que > combinaram. Depois é só > > contar o tamanho da lista. > > > > E, não, eu não sabia isso de cabeça, é que eu to nesse capítulo do > livro... :p > > > > O exemplo do livro diz algo parecido com > > > > > > > > my $string = "Estou feliz, passei em Matematica Discreta I, feliz!"; > > printf "Apareceu %s vezes...\n", $c=@b=$string=~/feliz/g; > > > > > > > > Na verdade era mais pra scalar( @b = $string =~ /feliz/g ); > , que eu > > achei longo, mas mais legível. > > > > Espero ter ajudado > > > > > > > > > > > > On Dec 1, 2007 1:46 PM, Fernando Oliveira < fernandocorrea em gmail.com> > wrote: > > > > > 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: > > > > > > > > > > > > my $string = "Estou feliz, passei em Matematica Discreta I, feliz!"; > > > printf "Apareceu %s vezes...\n", scalar($string =~ s/(feliz)/$1/g); > > > > > > > > > > > > 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 > > > _______________________________________________ > > > 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 > _______________________________________________ > Rio-pm mailing list > Rio-pm em pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > From phikeda em gmail.com Sat Dec 1 15:57:28 2007 From: phikeda em gmail.com (Pedro Henrique) Date: Sat, 1 Dec 2007 20:57:28 -0300 Subject: [Rio-pm] detectando arquivos abertos In-Reply-To: <12d1f4ee0712010259i1fcb6012w427035a6513f3f1c@mail.gmail.com> References: <6f39b0390711301905q37c93291y3cf1db17cb4390ec@mail.gmail.com> <12d1f4ee0712010259i1fcb6012w427035a6513f3f1c@mail.gmail.com> Message-ID: <6f39b0390712011557g36355191j9593b06b6ab700b1@mail.gmail.com> Solli, é exatamente isso que eu quero, só que pra Windows :-( Vlw, PH On Dec 1, 2007 7:59 AM, Solli Honorio wrote: > Não existe função built-in no Perl para isto, alias eu acredito que em > nenhuma linguagem. Isto depende muito do sistemas operacional, para linux > temos http://search.cpan.org/~jstowe/Linux-Fuser-1.4/lib/Linux/Fuser.pm, > para Windows eu não conheço nada, ainda. > > Solli M. Honório > > On Dec 1, 2007 1:05 AM, Pedro Henrique < phikeda em gmail.com> wrote: > > > Amigos, > > > > estou meio empacado num problema que deve ser idiota, mas sabem como > > é... > > > > Dá pra saber (com Perl) se um arquivo está aberto ou não? > > > > Sei que isso é muito dependente de sistema operacional, mas de repente > > alguém já teve esse tipo de problema e pode me ajudar.Procurei nos > > testes de arquivos (-X) mas não achei nada... > > > > Vlw, > > > > PH > > > > > > _______________________________________________ > > Rio-pm mailing list > > Rio-pm em pm.org > > http://mail.pm.org/mailman/listinfo/rio-pm > > > > > > -- > "o animal satisfeito dorme". - Guimarães Rosa > _______________________________________________ > Rio-pm mailing list > Rio-pm em pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > -------------- Próxima Parte ---------- Um anexo em HTML foi limpo... URL: http://mail.pm.org/pipermail/rio-pm/attachments/20071201/50a4eaab/attachment-0001.html From phikeda em gmail.com Sat Dec 1 16:02:40 2007 From: phikeda em gmail.com (Pedro Henrique) Date: Sat, 1 Dec 2007 21:02:40 -0300 Subject: [Rio-pm] detectando arquivos abertos In-Reply-To: <42dcdd750712010651n6b8bfe7br82df60dff1f90a43@mail.gmail.com> References: <6f39b0390711301905q37c93291y3cf1db17cb4390ec@mail.gmail.com> <12d1f4ee0712010259i1fcb6012w427035a6513f3f1c@mail.gmail.com> <42dcdd750712010651n6b8bfe7br82df60dff1f90a43@mail.gmail.com> Message-ID: <6f39b0390712011602nd87bc47q91a88a87ad83fb46@mail.gmail.com> Marco Antonio, não é pra file locking não, é pra fazer um levantamento dos arquivos que estão abertos no sistema (quais, quantos, etc). Queria fazer um programa parecido com esse: http://www.microsoft.com/technet/sysinternals/utilities/filemon.mspx Vlw, PH On Dec 1, 2007 11:51 AM, Marco A P D'Andrade wrote: > Mas, obviamente dependendo de seu SO, vc pode utilizar mecanismos como > flock, desde que todos os aplicativos fazam tal utilização. > > http://perldoc.perl.org/functions/flock.html > > > Se nos passar mais detalhes, podemos opinar sobre os caminhos possíveis. > > Sds, > Marco Antonio > > Em 01/12/07, Solli Honorio escreveu: > > Não existe função built-in no Perl para isto, alias eu acredito que em > > nenhuma linguagem. Isto depende muito do sistemas operacional, para > linux > > temos > > http://search.cpan.org/~jstowe/Linux-Fuser-1.4/lib/Linux/Fuser.pm > , > > para Windows eu não conheço nada, ainda. > > > > Solli M. Honório > > > > > > On Dec 1, 2007 1:05 AM, Pedro Henrique < phikeda em gmail.com> wrote: > > > > > > Amigos, > > > > > > estou meio empacado num problema que deve ser idiota, mas sabem como > é... > > > > > > Dá pra saber (com Perl) se um arquivo está aberto ou não? > > > > > > Sei que isso é muito dependente de sistema operacional, mas de repente > > alguém já teve esse tipo de problema e pode me ajudar.Procurei nos > testes de > > arquivos (-X) mas não achei nada... > > > > > > Vlw, > > > > > > PH > > > > > > > > > _______________________________________________ > > > Rio-pm mailing list > > > Rio-pm em pm.org > > > http://mail.pm.org/mailman/listinfo/rio-pm > > > > > > > > > > > -- > > "o animal satisfeito dorme". - Guimarães Rosa > > _______________________________________________ > > 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 > -------------- Próxima Parte ---------- Um anexo em HTML foi limpo... URL: http://mail.pm.org/pipermail/rio-pm/attachments/20071201/62cedff9/attachment.html From blabos em gmail.com Sat Dec 1 16:52:41 2007 From: blabos em gmail.com (Blabos de Blebe) Date: Sat, 1 Dec 2007 22:52:41 -0200 Subject: [Rio-pm] =?iso-8859-1?q?Express=E3o_Regular_m//?= In-Reply-To: References: <42dcdd750712010655y3f5fb31el4f15b93cdbcfdf25@mail.gmail.com> <179354400712011016p47447619vc69ed45318b6e7af@mail.gmail.com> Message-ID: <179354400712011652o8fd5a23o89f93390fb803e9b@mail.gmail.com> Breno, digamos que ao inves de $string a variavel fosse $s, vc teria 48. Nesse caso eu apelaria para $_="Estou feliz, passei em Matematica Discreta I, feliz!"; $_=@_=/feliz/g;print"Apareceu $_ vezes...\n" E descartada a primeira linha, eu teria 44. Tá valendo? On Dec 1, 2007 9:49 PM, breno wrote: > Pra golfe, realmente. Mas como resposta para a pergunta do Gabriel > (que está aprendendo Perl ainda) acho que a melhor é a que está no > próprio FAQ do Perl, parecida com a versão do Lorn: > > ------------------8<----------------- > > $cont++ while $string =~ /feliz/g; > > ------------------8<----------------- > > Agora, se estamos falando de golfe, aí vai a minha tacada! > > (supondo a linha anterior como: my $string = "Estou feliz, passei em > Matematica Discreta I, feliz!"; > e a saida como tendo que ser "apareceu X vezes..." e quebrar linha no > final) > $c=@b=$string=~/feliz/g;print"apareceu $c vezes...\n" > > 53 caracteres :-) > > obs: redução da versão do Fernando, que aparentemente esqueceu que a > diferença entre o print e o printf é grande :-P > > []s > > -b > > On Dec 1, 2007 6:31 PM, Fernando Oliveira > wrote: > > sim...mas ainda tenho menos caracteres... > > > > Em 01/12/07, Blabos de Blebe escreveu: > > > > > > > > > > > > Detalhe besta, como quase disse o fernando, m// no contexto de lista > > retorna $1, $2, ..., $N, > > > porém utilizando o modificador g, retorna todas as substrings que > > combinaram. Depois é só > > > contar o tamanho da lista. > > > > > > E, não, eu não sabia isso de cabeça, é que eu to nesse capítulo do > > livro... :p > > > > > > O exemplo do livro diz algo parecido com > > > > > > > > > > > > my $string = "Estou feliz, passei em Matematica Discreta I, feliz!"; > > > printf "Apareceu %s vezes...\n", $c=@b=$string=~/feliz/g; > > > > > > > > > > > > Na verdade era mais pra scalar( @b = $string =~ /feliz/g ); > > , que eu > > > achei longo, mas mais legível. > > > > > > Espero ter ajudado > > > > > > > > > > > > > > > > > > On Dec 1, 2007 1:46 PM, Fernando Oliveira < fernandocorrea em gmail.com> > > wrote: > > > > > > > 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: > > > > > > > > > > > > > > > > my $string = "Estou feliz, passei em Matematica Discreta I, feliz!"; > > > > printf "Apareceu %s vezes...\n", scalar($string =~ s/(feliz)/$1/g); > > > > > > > > > > > > > > > > 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 > > > > _______________________________________________ > > > > 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 > > _______________________________________________ > > 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 > -------------- Próxima Parte ---------- Um anexo em HTML foi limpo... URL: http://mail.pm.org/pipermail/rio-pm/attachments/20071201/c22424ee/attachment-0001.html From mdacwb em gmail.com Sat Dec 1 17:02:56 2007 From: mdacwb em gmail.com (Marco A P D'Andrade) Date: Sat, 1 Dec 2007 23:02:56 -0200 Subject: [Rio-pm] =?iso-8859-1?q?Express=E3o_Regular_m//?= In-Reply-To: <179354400712011652o8fd5a23o89f93390fb803e9b@mail.gmail.com> References: <42dcdd750712010655y3f5fb31el4f15b93cdbcfdf25@mail.gmail.com> <179354400712011016p47447619vc69ed45318b6e7af@mail.gmail.com> <179354400712011652o8fd5a23o89f93390fb803e9b@mail.gmail.com> Message-ID: <42dcdd750712011702j54e54f4q9f83c609687fe1be@mail.gmail.com> Gabriel, Bem, já deu pra perceber que existe mais de uma maneira de se fazer algo, e o pessoal se empolga em descobrir alternativas. Mas lembre-se de se concentrar em qualquer uma que seja legível para vc, e resolva o seu problema. Após algum tempo aprendendo as varias alternativas será interessante se concentrar nas versões mais legiveis, pois versões de dificil interpretação tendem a dificultar qualquer manutenção futura (em termos de sistemas). Sds, Marco Antonio Em 01/12/07, Blabos de Blebe escreveu: > Breno, digamos que ao inves de $string a variavel fosse $s, vc teria 48. > > Nesse caso eu apelaria para > > > $_="Estou feliz, passei em Matematica Discreta I, feliz!"; > $_=@_=/feliz/g;print"Apareceu $_ vezes...\n" > > > E descartada a primeira linha, eu teria 44. > Tá valendo? > > > > On Dec 1, 2007 9:49 PM, breno wrote: > > > Pra golfe, realmente. Mas como resposta para a pergunta do Gabriel > > (que está aprendendo Perl ainda) acho que a melhor é a que está no > > próprio FAQ do Perl, parecida com a versão do Lorn: > > > > ------------------8<----------------- > > > > $cont++ while $string =~ /feliz/g; > > > > ------------------8<----------------- > > > > Agora, se estamos falando de golfe, aí vai a minha tacada! > > > > (supondo a linha anterior como: my $string = "Estou feliz, passei em > > Matematica Discreta I, feliz!"; > > e a saida como tendo que ser "apareceu X vezes..." e quebrar linha no > final) > > $c=@b=$string=~/feliz/g;print"apareceu $c vezes...\n" > > > > 53 caracteres :-) > > > > obs: redução da versão do Fernando, que aparentemente esqueceu que a > > diferença entre o print e o printf é grande :-P > > > > []s > > > > -b > > > > > > > > > > On Dec 1, 2007 6:31 PM, Fernando Oliveira > wrote: > > > sim...mas ainda tenho menos caracteres... > > > > > > Em 01/12/07, Blabos de Blebe < blabos em gmail.com> escreveu: > > > > > > > > > > > > > > > > Detalhe besta, como quase disse o fernando, m// no contexto de lista > > > retorna $1, $2, ..., $N, > > > > porém utilizando o modificador g, retorna todas as substrings que > > > combinaram. Depois é só > > > > contar o tamanho da lista. > > > > > > > > E, não, eu não sabia isso de cabeça, é que eu to nesse capítulo do > > > livro... :p > > > > > > > > O exemplo do livro diz algo parecido com > > > > > > > > > > > > > > > > my $string = "Estou feliz, passei em Matematica Discreta I, feliz!"; > > > > printf "Apareceu %s vezes...\n", $c=@b=$string=~/feliz/g; > > > > > > > > > > > > > > > > Na verdade era mais pra scalar( @b = $string =~ /feliz/g ); > > > , que eu > > > > achei longo, mas mais legível. > > > > > > > > Espero ter ajudado > > > > > > > > > > > > > > > > > > > > > > > > On Dec 1, 2007 1:46 PM, Fernando Oliveira < fernandocorrea em gmail.com> > > > wrote: > > > > > > > > > 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: > > > > > > > > > > > > > > > > > > > > my $string = "Estou feliz, passei em Matematica Discreta I, feliz!"; > > > > > printf "Apareceu %s vezes...\n", scalar($string =~ s/(feliz)/$1/g); > > > > > > > > > > > > > > > > > > > > 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 > > > > > _______________________________________________ > > > > > 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 > > > _______________________________________________ > > > > > > > > > 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 > > > > > _______________________________________________ > Rio-pm mailing list > Rio-pm em pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > From mdacwb em gmail.com Sat Dec 1 17:10:35 2007 From: mdacwb em gmail.com (Marco A P D'Andrade) Date: Sat, 1 Dec 2007 23:10:35 -0200 Subject: [Rio-pm] detectando arquivos abertos In-Reply-To: <6f39b0390712011602nd87bc47q91a88a87ad83fb46@mail.gmail.com> References: <6f39b0390711301905q37c93291y3cf1db17cb4390ec@mail.gmail.com> <12d1f4ee0712010259i1fcb6012w427035a6513f3f1c@mail.gmail.com> <42dcdd750712010651n6b8bfe7br82df60dff1f90a43@mail.gmail.com> <6f39b0390712011602nd87bc47q91a88a87ad83fb46@mail.gmail.com> Message-ID: <42dcdd750712011710l50f7dad4jac98af7641c2f41b@mail.gmail.com> Bem, neste caso vc terá de correr atrás das api´s do próprio windows, claro... depois de procurar no http://search.cpan.org por win32 ;) Como o Solli já havia afirmado, isto é totalmente dependente do SO, e por isto fica difícil manter padrões... Sds, Marco Antonio Em 01/12/07, Pedro Henrique escreveu: > Marco Antonio, não é pra file locking não, é pra fazer um levantamento dos > arquivos que estão abertos no sistema (quais, quantos, etc). > > Queria fazer um programa parecido com esse: > > http://www.microsoft.com/technet/sysinternals/utilities/filemon.mspx > > Vlw, > > PH > > > On Dec 1, 2007 11:51 AM, Marco A P D'Andrade wrote: > > Mas, obviamente dependendo de seu SO, vc pode utilizar mecanismos como > > flock, desde que todos os aplicativos fazam tal utilização. > > > > http://perldoc.perl.org/functions/flock.html > > > > > > Se nos passar mais detalhes, podemos opinar sobre os caminhos possíveis. > > > > Sds, > > Marco Antonio > > > > Em 01/12/07, Solli Honorio escreveu: > > > > > > > > > Não existe função built-in no Perl para isto, alias eu acredito que em > > > nenhuma linguagem. Isto depende muito do sistemas operacional, para > linux > > > temos > > > > http://search.cpan.org/~jstowe/Linux-Fuser-1.4/lib/Linux/Fuser.pm > , > > > para Windows eu não conheço nada, ainda. > > > > > > Solli M. Honório > > > > > > > > > On Dec 1, 2007 1:05 AM, Pedro Henrique < phikeda em gmail.com> wrote: > > > > > > > > Amigos, > > > > > > > > estou meio empacado num problema que deve ser idiota, mas sabem como > é... > > > > > > > > Dá pra saber (com Perl) se um arquivo está aberto ou não? > > > > > > > > Sei que isso é muito dependente de sistema operacional, mas de repente > > > alguém já teve esse tipo de problema e pode me ajudar.Procurei nos > testes de > > > arquivos (-X) mas não achei nada... > > > > > > > > Vlw, > > > > > > > > PH > > > > > > > > > > > > _______________________________________________ > > > > Rio-pm mailing list > > > > Rio-pm em pm.org > > > > http://mail.pm.org/mailman/listinfo/rio-pm > > > > > > > > > > > > > > > > -- > > > "o animal satisfeito dorme". - Guimarães Rosa > > > _______________________________________________ > > > 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 > > > > > _______________________________________________ > Rio-pm mailing list > Rio-pm em pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > From blabos em gmail.com Sat Dec 1 17:14:31 2007 From: blabos em gmail.com (Blabos de Blebe) Date: Sat, 1 Dec 2007 23:14:31 -0200 Subject: [Rio-pm] =?iso-8859-1?q?Express=E3o_Regular_m//?= In-Reply-To: <42dcdd750712011702j54e54f4q9f83c609687fe1be@mail.gmail.com> References: <42dcdd750712010655y3f5fb31el4f15b93cdbcfdf25@mail.gmail.com> <179354400712011016p47447619vc69ed45318b6e7af@mail.gmail.com> <179354400712011652o8fd5a23o89f93390fb803e9b@mail.gmail.com> <42dcdd750712011702j54e54f4q9f83c609687fe1be@mail.gmail.com> Message-ID: <179354400712011714s5418190x34dab134067e9ceb@mail.gmail.com> Concordo. Eng de Software deve vir em primeiro lugar, não por mim, mas por quem vai dar manutenção no meu código depois, que poderá me chamar de elegante ou porco, conforme o caso. Em produção eu preferiria a versão da FAQ, que aliás também é pequena e por 3 caracteres não empatou com a minha: $_="Estou feliz, passei em Matematica Discreta I, feliz!"; $c++while/feliz/g;print"Apareceu $c vezes...\n" On Dec 1, 2007 11:02 PM, Marco A P D'Andrade wrote: > Gabriel, > > Bem, já deu pra perceber que existe mais de uma maneira de se fazer > algo, e o pessoal se empolga em descobrir alternativas. > > Mas lembre-se de se concentrar em qualquer uma que seja legível para > vc, e resolva o seu problema. > > Após algum tempo aprendendo as varias alternativas será interessante > se concentrar nas versões mais legiveis, pois versões de dificil > interpretação tendem a dificultar qualquer manutenção futura (em > termos de sistemas). > > Sds, > Marco Antonio > > Em 01/12/07, Blabos de Blebe escreveu: > > Breno, digamos que ao inves de $string a variavel fosse $s, vc teria 48. > > > > Nesse caso eu apelaria para > > > > > > $_="Estou feliz, passei em Matematica Discreta I, feliz!"; > > $_=@_=/feliz/g;print"Apareceu $_ vezes...\n" > > > > > > E descartada a primeira linha, eu teria 44. > > Tá valendo? > > > > > > > > On Dec 1, 2007 9:49 PM, breno wrote: > > > > > Pra golfe, realmente. Mas como resposta para a pergunta do Gabriel > > > (que está aprendendo Perl ainda) acho que a melhor é a que está no > > > próprio FAQ do Perl, parecida com a versão do Lorn: > > > > > > ------------------8<----------------- > > > > > > $cont++ while $string =~ /feliz/g; > > > > > > ------------------8<----------------- > > > > > > Agora, se estamos falando de golfe, aí vai a minha tacada! > > > > > > (supondo a linha anterior como: my $string = "Estou feliz, passei em > > > Matematica Discreta I, feliz!"; > > > e a saida como tendo que ser "apareceu X vezes..." e quebrar linha no > > final) > > > $c=@b=$string=~/feliz/g;print"apareceu $c vezes...\n" > > > > > > 53 caracteres :-) > > > > > > obs: redução da versão do Fernando, que aparentemente esqueceu que a > > > diferença entre o print e o printf é grande :-P > > > > > > []s > > > > > > -b > > > > > > > > > > > > > > > On Dec 1, 2007 6:31 PM, Fernando Oliveira > > wrote: > > > > sim...mas ainda tenho menos caracteres... > > > > > > > > Em 01/12/07, Blabos de Blebe < blabos em gmail.com> escreveu: > > > > > > > > > > > > > > > > > > > > Detalhe besta, como quase disse o fernando, m// no contexto de > lista > > > > retorna $1, $2, ..., $N, > > > > > porém utilizando o modificador g, retorna todas as substrings que > > > > combinaram. Depois é só > > > > > contar o tamanho da lista. > > > > > > > > > > E, não, eu não sabia isso de cabeça, é que eu to nesse capítulo do > > > > livro... :p > > > > > > > > > > O exemplo do livro diz algo parecido com > > > > > > > > > > > > > > > > > > > > my $string = "Estou feliz, passei em Matematica Discreta I, > feliz!"; > > > > > printf "Apareceu %s vezes...\n", $c=@b=$string=~/feliz/g; > > > > > > > > > > > > > > > > > > > > Na verdade era mais pra scalar( @b = $string =~ /feliz/g ); > > > > , que eu > > > > > achei longo, mas mais legível. > > > > > > > > > > Espero ter ajudado > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Dec 1, 2007 1:46 PM, Fernando Oliveira < > fernandocorrea em gmail.com> > > > > wrote: > > > > > > > > > > > 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: > > > > > > > > > > > > > > > > > > > > > > > > my $string = "Estou feliz, passei em Matematica Discreta I, > feliz!"; > > > > > > printf "Apareceu %s vezes...\n", scalar($string =~ > s/(feliz)/$1/g); > > > > > > > > > > > > > > > > > > > > > > > > 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 > > > > > > _______________________________________________ > > > > > > 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 > > > > _______________________________________________ > > > > > > > > > > > > > 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 > > > > > > > > > _______________________________________________ > > 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 > -------------- Próxima Parte ---------- Um anexo em HTML foi limpo... URL: http://mail.pm.org/pipermail/rio-pm/attachments/20071201/007a61ac/attachment-0001.html From blabos em gmail.com Sat Dec 1 18:28:59 2007 From: blabos em gmail.com (Blabos de Blebe) Date: Sun, 2 Dec 2007 00:28:59 -0200 Subject: [Rio-pm] =?iso-8859-1?q?Express=E3o_Regular_m//?= In-Reply-To: <179354400712011714s5418190x34dab134067e9ceb@mail.gmail.com> References: <42dcdd750712010655y3f5fb31el4f15b93cdbcfdf25@mail.gmail.com> <179354400712011016p47447619vc69ed45318b6e7af@mail.gmail.com> <179354400712011652o8fd5a23o89f93390fb803e9b@mail.gmail.com> <42dcdd750712011702j54e54f4q9f83c609687fe1be@mail.gmail.com> <179354400712011714s5418190x34dab134067e9ceb@mail.gmail.com> Message-ID: <179354400712011828q71b6693bx1d85e3e05c2ac672@mail.gmail.com> Vale isso: $_="Estou feliz, passei em Matematica Discreta I, feliz!"; die"Apareceu ".(@_=/feliz/g)." vezes...\n" 42 On Dec 1, 2007 11:14 PM, Blabos de Blebe wrote: > Concordo. > > Eng de Software deve vir em primeiro lugar, não por mim, mas por quem vai > dar manutenção no meu código depois, que poderá me chamar de elegante > ou porco, conforme o caso. > > Em produção eu preferiria a versão da FAQ, que aliás também é pequena e > por 3 caracteres não empatou com a minha: > > > $_="Estou feliz, passei em Matematica Discreta I, feliz!"; > $c++while/feliz/g;print"Apareceu $c vezes...\n" > > > > > > > On Dec 1, 2007 11:02 PM, Marco A P D'Andrade wrote: > > > Gabriel, > > > > Bem, já deu pra perceber que existe mais de uma maneira de se fazer > > algo, e o pessoal se empolga em descobrir alternativas. > > > > Mas lembre-se de se concentrar em qualquer uma que seja legível para > > vc, e resolva o seu problema. > > > > Após algum tempo aprendendo as varias alternativas será interessante > > se concentrar nas versões mais legiveis, pois versões de dificil > > interpretação tendem a dificultar qualquer manutenção futura (em > > termos de sistemas). > > > > Sds, > > Marco Antonio > > > > Em 01/12/07, Blabos de Blebe escreveu: > > > Breno, digamos que ao inves de $string a variavel fosse $s, vc teria > > 48. > > > > > > Nesse caso eu apelaria para > > > > > > > > > $_="Estou feliz, passei em Matematica Discreta I, feliz!"; > > > $_=@_=/feliz/g;print"Apareceu $_ vezes...\n" > > > > > > > > > E descartada a primeira linha, eu teria 44. > > > Tá valendo? > > > > > > > > > > > > On Dec 1, 2007 9:49 PM, breno wrote: > > > > > > > Pra golfe, realmente. Mas como resposta para a pergunta do Gabriel > > > > (que está aprendendo Perl ainda) acho que a melhor é a que está no > > > > próprio FAQ do Perl, parecida com a versão do Lorn: > > > > > > > > ------------------8<----------------- > > > > > > > > $cont++ while $string =~ /feliz/g; > > > > > > > > ------------------8<----------------- > > > > > > > > Agora, se estamos falando de golfe, aí vai a minha tacada! > > > > > > > > (supondo a linha anterior como: my $string = "Estou feliz, passei em > > > > Matematica Discreta I, feliz!"; > > > > e a saida como tendo que ser "apareceu X vezes..." e quebrar linha > > no > > > final) > > > > $c=@b=$string=~/feliz/g;print"apareceu $c vezes...\n" > > > > > > > > 53 caracteres :-) > > > > > > > > obs: redução da versão do Fernando, que aparentemente esqueceu que a > > > > > > diferença entre o print e o printf é grande :-P > > > > > > > > []s > > > > > > > > -b > > > > > > > > > > > > > > > > > > > > On Dec 1, 2007 6:31 PM, Fernando Oliveira < fernandocorrea em gmail.com > > > > > > wrote: > > > > > sim...mas ainda tenho menos caracteres... > > > > > > > > > > Em 01/12/07, Blabos de Blebe < blabos em gmail.com> escreveu: > > > > > > > > > > > > > > > > > > > > > > > > Detalhe besta, como quase disse o fernando, m// no contexto de > > lista > > > > > retorna $1, $2, ..., $N, > > > > > > porém utilizando o modificador g, retorna todas as substrings > > que > > > > > combinaram. Depois é só > > > > > > contar o tamanho da lista. > > > > > > > > > > > > E, não, eu não sabia isso de cabeça, é que eu to nesse capítulo > > do > > > > > livro... :p > > > > > > > > > > > > O exemplo do livro diz algo parecido com > > > > > > > > > > > > > > > > > > > > > > > > my $string = "Estou feliz, passei em Matematica Discreta I, > > feliz!"; > > > > > > printf "Apareceu %s vezes...\n", $c=@b=$string=~/feliz/g; > > > > > > > > > > > > > > > > > > > > > > > > Na verdade era mais pra scalar( @b = $string =~ /feliz/g > > ); > > > > > , que eu > > > > > > achei longo, mas mais legível. > > > > > > > > > > > > Espero ter ajudado > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Dec 1, 2007 1:46 PM, Fernando Oliveira < > > fernandocorrea em gmail.com> > > > > > wrote: > > > > > > > > > > > > > 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: > > > > > > > > > > > > > > > > > > > > > > > > > > > > my $string = "Estou feliz, passei em Matematica Discreta I, > > feliz!"; > > > > > > > printf "Apareceu %s vezes...\n", scalar($string =~ > > s/(feliz)/$1/g); > > > > > > > > > > > > > > > > > > > > > > > > > > > > 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 > > > > > > > _______________________________________________ > > > > > > > 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 > > > > > _______________________________________________ > > > > > > > > > > > > > > > > > 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 > > > > > > > > > > > > > _______________________________________________ > > > 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 > > > > -------------- Próxima Parte ---------- Um anexo em HTML foi limpo... URL: http://mail.pm.org/pipermail/rio-pm/attachments/20071202/4607b4fb/attachment.html From fernandocorrea em gmail.com Sat Dec 1 18:52:06 2007 From: fernandocorrea em gmail.com (Fernando Oliveira) Date: Sun, 2 Dec 2007 00:52:06 -0200 Subject: [Rio-pm] =?iso-8859-1?q?Express=E3o_Regular_m//?= In-Reply-To: <179354400712011714s5418190x34dab134067e9ceb@mail.gmail.com> References: <42dcdd750712010655y3f5fb31el4f15b93cdbcfdf25@mail.gmail.com> <179354400712011016p47447619vc69ed45318b6e7af@mail.gmail.com> <179354400712011652o8fd5a23o89f93390fb803e9b@mail.gmail.com> <42dcdd750712011702j54e54f4q9f83c609687fe1be@mail.gmail.com> <179354400712011714s5418190x34dab134067e9ceb@mail.gmail.com> Message-ID: Desculpem!!! era golf?! eu não sabia!!! Minha tacada! (ao invés de um perl -e, estou usando um perl -le...) print"apareceu ",$string=~s/feliz//g," vezes..."' Em 01/12/07, Blabos de Blebe escreveu: > > Concordo. > > Eng de Software deve vir em primeiro lugar, não por mim, mas por quem vai > dar manutenção no meu código depois, que poderá me chamar de elegante > ou porco, conforme o caso. > > Em produção eu preferiria a versão da FAQ, que aliás também é pequena e > por 3 caracteres não empatou com a minha: > > > $_="Estou feliz, passei em Matematica Discreta I, feliz!"; > $c++while/feliz/g;print"Apareceu $c vezes...\n" > > > > > > On Dec 1, 2007 11:02 PM, Marco A P D'Andrade wrote: > > > Gabriel, > > > > Bem, já deu pra perceber que existe mais de uma maneira de se fazer > > algo, e o pessoal se empolga em descobrir alternativas. > > > > Mas lembre-se de se concentrar em qualquer uma que seja legível para > > vc, e resolva o seu problema. > > > > Após algum tempo aprendendo as varias alternativas será interessante > > se concentrar nas versões mais legiveis, pois versões de dificil > > interpretação tendem a dificultar qualquer manutenção futura (em > > termos de sistemas). > > > > Sds, > > Marco Antonio > > > > Em 01/12/07, Blabos de Blebe escreveu: > > > Breno, digamos que ao inves de $string a variavel fosse $s, vc teria > > 48. > > > > > > Nesse caso eu apelaria para > > > > > > > > > $_="Estou feliz, passei em Matematica Discreta I, feliz!"; > > > $_=@_=/feliz/g;print"Apareceu $_ vezes...\n" > > > > > > > > > E descartada a primeira linha, eu teria 44. > > > Tá valendo? > > > > > > > > > > > > On Dec 1, 2007 9:49 PM, breno wrote: > > > > > > > Pra golfe, realmente. Mas como resposta para a pergunta do Gabriel > > > > (que está aprendendo Perl ainda) acho que a melhor é a que está no > > > > próprio FAQ do Perl, parecida com a versão do Lorn: > > > > > > > > ------------------8<----------------- > > > > > > > > $cont++ while $string =~ /feliz/g; > > > > > > > > ------------------8<----------------- > > > > > > > > Agora, se estamos falando de golfe, aí vai a minha tacada! > > > > > > > > (supondo a linha anterior como: my $string = "Estou feliz, passei em > > > > Matematica Discreta I, feliz!"; > > > > e a saida como tendo que ser "apareceu X vezes..." e quebrar linha > > no > > > final) > > > > $c=@b=$string=~/feliz/g;print"apareceu $c vezes...\n" > > > > > > > > 53 caracteres :-) > > > > > > > > obs: redução da versão do Fernando, que aparentemente esqueceu que a > > > > > > diferença entre o print e o printf é grande :-P > > > > > > > > []s > > > > > > > > -b > > > > > > > > > > > > > > > > > > > > On Dec 1, 2007 6:31 PM, Fernando Oliveira < fernandocorrea em gmail.com > > > > > > wrote: > > > > > sim...mas ainda tenho menos caracteres... > > > > > > > > > > Em 01/12/07, Blabos de Blebe < blabos em gmail.com> escreveu: > > > > > > > > > > > > > > > > > > > > > > > > Detalhe besta, como quase disse o fernando, m// no contexto de > > lista > > > > > retorna $1, $2, ..., $N, > > > > > > porém utilizando o modificador g, retorna todas as substrings > > que > > > > > combinaram. Depois é só > > > > > > contar o tamanho da lista. > > > > > > > > > > > > E, não, eu não sabia isso de cabeça, é que eu to nesse capítulo > > do > > > > > livro... :p > > > > > > > > > > > > O exemplo do livro diz algo parecido com > > > > > > > > > > > > > > > > > > > > > > > > my $string = "Estou feliz, passei em Matematica Discreta I, > > feliz!"; > > > > > > printf "Apareceu %s vezes...\n", $c=@b=$string=~/feliz/g; > > > > > > > > > > > > > > > > > > > > > > > > Na verdade era mais pra scalar( @b = $string =~ /feliz/g > > ); > > > > > , que eu > > > > > > achei longo, mas mais legível. > > > > > > > > > > > > Espero ter ajudado > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Dec 1, 2007 1:46 PM, Fernando Oliveira < > > fernandocorrea em gmail.com> > > > > > wrote: > > > > > > > > > > > > > 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: > > > > > > > > > > > > > > > > > > > > > > > > > > > > my $string = "Estou feliz, passei em Matematica Discreta I, > > feliz!"; > > > > > > > printf "Apareceu %s vezes...\n", scalar($string =~ > > s/(feliz)/$1/g); > > > > > > > > > > > > > > > > > > > > > > > > > > > > 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 > > > > > > > _______________________________________________ > > > > > > > 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 > > > > > _______________________________________________ > > > > > > > > > > > > > > > > > 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 > > > > > > > > > > > > > _______________________________________________ > > > 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 > > > > > _______________________________________________ > 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/20071202/947fba35/attachment-0001.html From gabriel.vieira em gmail.com Sat Dec 1 20:30:24 2007 From: gabriel.vieira em gmail.com (Gabriel Vieira) Date: Sun, 2 Dec 2007 01:30:24 -0300 Subject: [Rio-pm] =?iso-8859-1?q?Express=E3o_Regular_m//?= In-Reply-To: References: <42dcdd750712010655y3f5fb31el4f15b93cdbcfdf25@mail.gmail.com> <179354400712011016p47447619vc69ed45318b6e7af@mail.gmail.com> <179354400712011652o8fd5a23o89f93390fb803e9b@mail.gmail.com> <42dcdd750712011702j54e54f4q9f83c609687fe1be@mail.gmail.com> <179354400712011714s5418190x34dab134067e9ceb@mail.gmail.com> Message-ID: <83d8367f0712012030x8817360g3efcaa4441af1303@mail.gmail.com> Pra facilitar pro Fernando Supondo que: $_="Estou feliz, passei em Matematica Discreta I, feliz!"; print"apareceu ",s/feliz//g," vezes..." On Dec 1, 2007 11:52 PM, Fernando Oliveira wrote: > Desculpem!!! era golf?! eu não sabia!!! > Minha tacada! > > (ao invés de um perl -e, estou usando um perl -le...) > > print"apareceu ",$string=~s/feliz//g," vezes..."' > > > > > Em 01/12/07, Blabos de Blebe escreveu: > > Concordo. > > > > Eng de Software deve vir em primeiro lugar, não por mim, mas por quem vai > > dar manutenção no meu código depois, que poderá me chamar de elegante > > ou porco, conforme o caso. > > > > Em produção eu preferiria a versão da FAQ, que aliás também é pequena e > > por 3 caracteres não empatou com a minha: > > > > > > $_="Estou feliz, passei em Matematica Discreta I, feliz!"; > > $c++while/feliz/g;print"Apareceu $c vezes...\n" > > > > > > > > > > > > > > > > On Dec 1, 2007 11:02 PM, Marco A P D'Andrade wrote: > > > > > Gabriel, > > > > > > Bem, já deu pra perceber que existe mais de uma maneira de se fazer > > > algo, e o pessoal se empolga em descobrir alternativas. > > > > > > Mas lembre-se de se concentrar em qualquer uma que seja legível para > > > vc, e resolva o seu problema. > > > > > > Após algum tempo aprendendo as varias alternativas será interessante > > > se concentrar nas versões mais legiveis, pois versões de dificil > > > interpretação tendem a dificultar qualquer manutenção futura (em > > > termos de sistemas). > > > > > > Sds, > > > Marco Antonio > > > > > > > > > > > > > > > Em 01/12/07, Blabos de Blebe escreveu: > > > > Breno, digamos que ao inves de $string a variavel fosse $s, vc teria > 48. > > > > > > > > Nesse caso eu apelaria para > > > > > > > > > > > > $_="Estou feliz, passei em Matematica Discreta I, feliz!"; > > > > $_=@_=/feliz/g;print"Apareceu $_ vezes...\n" > > > > > > > > > > > > E descartada a primeira linha, eu teria 44. > > > > Tá valendo? > > > > > > > > > > > > > > > > On Dec 1, 2007 9:49 PM, breno < breno em rio.pm.org> wrote: > > > > > > > > > Pra golfe, realmente. Mas como resposta para a pergunta do Gabriel > > > > > (que está aprendendo Perl ainda) acho que a melhor é a que está no > > > > > próprio FAQ do Perl, parecida com a versão do Lorn: > > > > > > > > > > ------------------8<----------------- > > > > > > > > > > $cont++ while $string =~ /feliz/g; > > > > > > > > > > ------------------8<----------------- > > > > > > > > > > Agora, se estamos falando de golfe, aí vai a minha tacada! > > > > > > > > > > (supondo a linha anterior como: my $string = "Estou feliz, passei em > > > > > Matematica Discreta I, feliz!"; > > > > > e a saida como tendo que ser "apareceu X vezes..." e quebrar linha > no > > > > final) > > > > > $c=@b=$string=~/feliz/g;print"apareceu $c vezes...\n" > > > > > > > > > > 53 caracteres :-) > > > > > > > > > > obs: redução da versão do Fernando, que aparentemente esqueceu que a > > > > > diferença entre o print e o printf é grande :-P > > > > > > > > > > []s > > > > > > > > > > -b > > > > > > > > > > > > > > > > > > > > > > > > > On Dec 1, 2007 6:31 PM, Fernando Oliveira < > fernandocorrea em gmail.com> > > > > wrote: > > > > > > sim...mas ainda tenho menos caracteres... > > > > > > > > > > > > Em 01/12/07, Blabos de Blebe < blabos em gmail.com> escreveu: > > > > > > > > > > > > > > > > > > > > > > > > > > > > Detalhe besta, como quase disse o fernando, m// no contexto de > lista > > > > > > retorna $1, $2, ..., $N, > > > > > > > porém utilizando o modificador g, retorna todas as substrings > que > > > > > > combinaram. Depois é só > > > > > > > contar o tamanho da lista. > > > > > > > > > > > > > > E, não, eu não sabia isso de cabeça, é que eu to nesse capítulo > do > > > > > > livro... :p > > > > > > > > > > > > > > O exemplo do livro diz algo parecido com > > > > > > > > > > > > > > > > > > > > > > > > > > > > my $string = "Estou feliz, passei em Matematica Discreta I, > feliz!"; > > > > > > > printf "Apareceu %s vezes...\n", $c=@b=$string=~/feliz/g; > > > > > > > > > > > > > > > > > > > > > > > > > > > > Na verdade era mais pra scalar( @b = $string =~ /feliz/g > ); > > > > > > , que eu > > > > > > > achei longo, mas mais legível. > > > > > > > > > > > > > > Espero ter ajudado > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Dec 1, 2007 1:46 PM, Fernando Oliveira < > fernandocorrea em gmail.com> > > > > > > wrote: > > > > > > > > > > > > > > > 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: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > my $string = "Estou feliz, passei em Matematica Discreta I, > feliz!"; > > > > > > > > printf "Apareceu %s vezes...\n", scalar($string =~ > s/(feliz)/$1/g); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 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 > > > > > > > > _______________________________________________ > > > > > > > > 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 > > > > > > _______________________________________________ > > > > > > > > > > > > > > > > > > > > > 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 > > > > > > > > > > > > > > > > > _______________________________________________ > > > > 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 > > > > > > > > > _______________________________________________ > > Rio-pm mailing list > > Rio-pm em pm.org > > http://mail.pm.org/mailman/listinfo/rio-pm > > > > > > -- > []'s Fernando > _______________________________________________ > Rio-pm mailing list > Rio-pm em pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > -- Gabriel Vieira From shonorio em gmail.com Sun Dec 2 05:58:49 2007 From: shonorio em gmail.com (Solli Honorio) Date: Sun, 2 Dec 2007 11:58:49 -0200 Subject: [Rio-pm] detectando arquivos abertos In-Reply-To: <6f39b0390712011557g36355191j9593b06b6ab700b1@mail.gmail.com> References: <6f39b0390711301905q37c93291y3cf1db17cb4390ec@mail.gmail.com> <12d1f4ee0712010259i1fcb6012w427035a6513f3f1c@mail.gmail.com> <6f39b0390712011557g36355191j9593b06b6ab700b1@mail.gmail.com> Message-ID: <12d1f4ee0712020558n6479a2c9g8aa2f1da5ff085c0@mail.gmail.com> Cara, a maneira mais simples (e mais rápida neste momento) de fazer isto é lendo o output do handle ( http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/Handle.mspx ). Quem sabe num futuro próximo teremos um Win32::Fuser !? Solli M. Honório On Dec 1, 2007 9:57 PM, Pedro Henrique wrote: > Solli, é exatamente isso que eu quero, só que pra Windows :-( > > Vlw, > > PH > > > On Dec 1, 2007 7:59 AM, Solli Honorio wrote: > > > Não existe função built-in no Perl para isto, alias eu acredito que em > > nenhuma linguagem. Isto depende muito do sistemas operacional, para linux > > temos http://search.cpan.org/~jstowe/Linux-Fuser-1.4/lib/Linux/Fuser.pm, > > para Windows eu não conheço nada, ainda. > > > > Solli M. Honório > > > > On Dec 1, 2007 1:05 AM, Pedro Henrique < phikeda em gmail.com> wrote: > > > > > Amigos, > > > > > > estou meio empacado num problema que deve ser idiota, mas sabem como > > > é... > > > > > > Dá pra saber (com Perl) se um arquivo está aberto ou não? > > > > > > Sei que isso é muito dependente de sistema operacional, mas de repente > > > alguém já teve esse tipo de problema e pode me ajudar.Procurei nos > > > testes de arquivos (-X) mas não achei nada... > > > > > > Vlw, > > > > > > PH > > > > > > > > > _______________________________________________ > > > Rio-pm mailing list > > > Rio-pm em pm.org > > > http://mail.pm.org/mailman/listinfo/rio-pm > > > > > > > > > > > -- > > "o animal satisfeito dorme". - Guimarães Rosa > > _______________________________________________ > > 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 > -- "o animal satisfeito dorme". - Guimarães Rosa -------------- Próxima Parte ---------- Um anexo em HTML foi limpo... URL: http://mail.pm.org/pipermail/rio-pm/attachments/20071202/fbe2cd5c/attachment.html From gabriellima333 em hotmail.com Sun Dec 2 06:51:07 2007 From: gabriellima333 em hotmail.com (gabriel lima) Date: Sun, 2 Dec 2007 17:51:07 +0300 Subject: [Rio-pm] =?iso-8859-1?q?Express=E3o_Regular_m//?= Message-ID: Primeiro gostaria de agradecer a todos (Lorn, Fernando, Blabos, Breno, Marco e Gabriel) pelas respostas. Mas, concordo com o Marco, primeiro eu vou preocupar em resolver os meus problemas e depois que tiver mais experiencia, como vocês, vou analisar o que é melhor (: Portanto... #! 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++ while $string =~ m/feliz/g; print "Feliz apareceu $cont vezes\n"; } _________________________________________________________________ Receba GRÁTIS as mensagens do Messenger no seu celular quando você estiver offline. Conheça o MSN Mobile! http://mobile.live.com/signup/signup2.aspx?lc=pt-br -------------- Próxima Parte ---------- Um anexo em HTML foi limpo... URL: http://mail.pm.org/pipermail/rio-pm/attachments/20071202/13a8dbe7/attachment.html From breno em rio.pm.org Sun Dec 2 08:19:58 2007 From: breno em rio.pm.org (breno) Date: Sun, 2 Dec 2007 13:19:58 -0300 Subject: [Rio-pm] =?iso-8859-1?q?Express=E3o_Regular_m//?= In-Reply-To: References: Message-ID: Muito bom, Gabriel! A única modificação que eu faria está relacionada do "shebang". Vc colocou: #! D:\Perl\bin\Perl.exe Mas não faz diferença em ambiente Windows pois, como o Wesley falou a um tempo atrás e Solli e os outros comentaram, o Windows associa quem vai executar o arquivo pela extensão, e ignora completamente o shebang (ou não?). Então de um modo geral, se vc ensinar o Windows a executar sempre todos os arquivos .pl com a sua versão do Perl, vc estará bem, e poderá botar no shebang algo como: #! \usr\bin\perl e seu programa será instantaneamente multiplataforma (pelo menos o seu, que não usou nada dependente de sistema operaicional)! Me pergunto como o apache para Windows sem mod_perl ou FCGI lida com isso... []s -b On Dec 2, 2007 11:51 AM, gabriel lima wrote: > > Primeiro gostaria de agradecer a todos (Lorn, Fernando, Blabos, > Breno, Marco e Gabriel) pelas respostas. Mas, concordo com o Marco, > primeiro eu vou preocupar em resolver os meus problemas e depois > que tiver mais experiencia, como vocês, vou analisar o que é melhor (: > Portanto... > > #! 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++ while $string =~ m/feliz/g; > print "Feliz apareceu $cont vezes\n"; > } > > ________________________________ > Receba GRÁTIS as mensagens do Messenger no seu celular quando você estiver > offline. Conheça o MSN Mobile! Cadastre-se já! > > _______________________________________________ > Rio-pm mailing list > Rio-pm em pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > From fernandocorrea em gmail.com Sun Dec 2 09:08:59 2007 From: fernandocorrea em gmail.com (Fernando Oliveira) Date: Sun, 2 Dec 2007 15:08:59 -0200 Subject: [Rio-pm] =?iso-8859-1?q?Express=E3o_Regular_m//?= In-Reply-To: <83d8367f0712012030x8817360g3efcaa4441af1303@mail.gmail.com> References: <179354400712011016p47447619vc69ed45318b6e7af@mail.gmail.com> <179354400712011652o8fd5a23o89f93390fb803e9b@mail.gmail.com> <42dcdd750712011702j54e54f4q9f83c609687fe1be@mail.gmail.com> <179354400712011714s5418190x34dab134067e9ceb@mail.gmail.com> <83d8367f0712012030x8817360g3efcaa4441af1303@mail.gmail.com> Message-ID: Como assim?! não pode mudar a regra no meio do jogo!!! Em 02/12/07, Gabriel Vieira escreveu: > > Pra facilitar pro Fernando > Supondo que: > $_="Estou feliz, passei em Matematica Discreta I, feliz!"; > > > print"apareceu ",s/feliz//g," vezes..." > > > On Dec 1, 2007 11:52 PM, Fernando Oliveira > wrote: > > Desculpem!!! era golf?! eu não sabia!!! > > Minha tacada! > > > > (ao invés de um perl -e, estou usando um perl -le...) > > > > print"apareceu ",$string=~s/feliz//g," vezes..."' > > > > > > > > > > Em 01/12/07, Blabos de Blebe escreveu: > > > Concordo. > > > > > > Eng de Software deve vir em primeiro lugar, não por mim, mas por quem > vai > > > dar manutenção no meu código depois, que poderá me chamar de elegante > > > ou porco, conforme o caso. > > > > > > Em produção eu preferiria a versão da FAQ, que aliás também é pequena > e > > > por 3 caracteres não empatou com a minha: > > > > > > > > > $_="Estou feliz, passei em Matematica Discreta I, feliz!"; > > > $c++while/feliz/g;print"Apareceu $c vezes...\n" > > > > > > > > > > > > > > > > > > > > > > > > On Dec 1, 2007 11:02 PM, Marco A P D'Andrade wrote: > > > > > > > Gabriel, > > > > > > > > Bem, já deu pra perceber que existe mais de uma maneira de se fazer > > > > algo, e o pessoal se empolga em descobrir alternativas. > > > > > > > > Mas lembre-se de se concentrar em qualquer uma que seja legível para > > > > vc, e resolva o seu problema. > > > > > > > > Após algum tempo aprendendo as varias alternativas será interessante > > > > se concentrar nas versões mais legiveis, pois versões de dificil > > > > interpretação tendem a dificultar qualquer manutenção futura (em > > > > termos de sistemas). > > > > > > > > Sds, > > > > Marco Antonio > > > > > > > > > > > > > > > > > > > > Em 01/12/07, Blabos de Blebe escreveu: > > > > > Breno, digamos que ao inves de $string a variavel fosse $s, vc > teria > > 48. > > > > > > > > > > Nesse caso eu apelaria para > > > > > > > > > > > > > > > $_="Estou feliz, passei em Matematica Discreta I, feliz!"; > > > > > $_=@_=/feliz/g;print"Apareceu $_ vezes...\n" > > > > > > > > > > > > > > > E descartada a primeira linha, eu teria 44. > > > > > Tá valendo? > > > > > > > > > > > > > > > > > > > > On Dec 1, 2007 9:49 PM, breno < breno em rio.pm.org> wrote: > > > > > > > > > > > Pra golfe, realmente. Mas como resposta para a pergunta do > Gabriel > > > > > > (que está aprendendo Perl ainda) acho que a melhor é a que está > no > > > > > > próprio FAQ do Perl, parecida com a versão do Lorn: > > > > > > > > > > > > ------------------8<----------------- > > > > > > > > > > > > $cont++ while $string =~ /feliz/g; > > > > > > > > > > > > ------------------8<----------------- > > > > > > > > > > > > Agora, se estamos falando de golfe, aí vai a minha tacada! > > > > > > > > > > > > (supondo a linha anterior como: my $string = "Estou feliz, > passei em > > > > > > Matematica Discreta I, feliz!"; > > > > > > e a saida como tendo que ser "apareceu X vezes..." e quebrar > linha > > no > > > > > final) > > > > > > $c=@b=$string=~/feliz/g;print"apareceu $c vezes...\n" > > > > > > > > > > > > 53 caracteres :-) > > > > > > > > > > > > obs: redução da versão do Fernando, que aparentemente esqueceu > que a > > > > > > diferença entre o print e o printf é grande :-P > > > > > > > > > > > > []s > > > > > > > > > > > > -b > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Dec 1, 2007 6:31 PM, Fernando Oliveira < > > fernandocorrea em gmail.com> > > > > > wrote: > > > > > > > sim...mas ainda tenho menos caracteres... > > > > > > > > > > > > > > Em 01/12/07, Blabos de Blebe < blabos em gmail.com> escreveu: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Detalhe besta, como quase disse o fernando, m// no contexto > de > > lista > > > > > > > retorna $1, $2, ..., $N, > > > > > > > > porém utilizando o modificador g, retorna todas as > substrings > > que > > > > > > > combinaram. Depois é só > > > > > > > > contar o tamanho da lista. > > > > > > > > > > > > > > > > E, não, eu não sabia isso de cabeça, é que eu to nesse > capítulo > > do > > > > > > > livro... :p > > > > > > > > > > > > > > > > O exemplo do livro diz algo parecido com > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > my $string = "Estou feliz, passei em Matematica Discreta I, > > feliz!"; > > > > > > > > printf "Apareceu %s vezes...\n", $c=@b=$string=~/feliz/g; > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Na verdade era mais pra scalar( @b = $string =~ > /feliz/g > > ); > > > > > > > , que eu > > > > > > > > achei longo, mas mais legível. > > > > > > > > > > > > > > > > Espero ter ajudado > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Dec 1, 2007 1:46 PM, Fernando Oliveira < > > fernandocorrea em gmail.com> > > > > > > > wrote: > > > > > > > > > > > > > > > > > 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: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > my $string = "Estou feliz, passei em Matematica Discreta > I, > > feliz!"; > > > > > > > > > printf "Apareceu %s vezes...\n", scalar($string =~ > > s/(feliz)/$1/g); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 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 > > > > > > > > > _______________________________________________ > > > > > > > > > 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 > > > > > > > _______________________________________________ > > > > > > > > > > > > > > > > > > > > > > > > > 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 > > > > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > > 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 > > > > > > > > > > > > > _______________________________________________ > > > Rio-pm mailing list > > > Rio-pm em pm.org > > > http://mail.pm.org/mailman/listinfo/rio-pm > > > > > > > > > > > -- > > []'s Fernando > > _______________________________________________ > > Rio-pm mailing list > > Rio-pm em pm.org > > http://mail.pm.org/mailman/listinfo/rio-pm > > > > > > -- > Gabriel Vieira > _______________________________________________ > 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/20071202/9c047aba/attachment-0001.html From gabriel.vieira em gmail.com Sun Dec 2 09:11:53 2007 From: gabriel.vieira em gmail.com (Gabriel Vieira) Date: Sun, 2 Dec 2007 14:11:53 -0300 Subject: [Rio-pm] =?iso-8859-1?q?Express=E3o_Regular_m//?= In-Reply-To: References: <179354400712011016p47447619vc69ed45318b6e7af@mail.gmail.com> <179354400712011652o8fd5a23o89f93390fb803e9b@mail.gmail.com> <42dcdd750712011702j54e54f4q9f83c609687fe1be@mail.gmail.com> <179354400712011714s5418190x34dab134067e9ceb@mail.gmail.com> <83d8367f0712012030x8817360g3efcaa4441af1303@mail.gmail.com> Message-ID: <83d8367f0712020911s59529357wefb14604c8fa6373@mail.gmail.com> haha, 2o tempo!! =P Bom, foi mistura do teu codigo com o do Bablos =D e se tratando de Perl Golf, vale! =D hahaha Abraços ;D On Dec 2, 2007 2:08 PM, Fernando Oliveira wrote: > Como assim?! não pode mudar a regra no meio do jogo!!! > > Em 02/12/07, Gabriel Vieira escreveu: > > > Pra facilitar pro Fernando > > Supondo que: > > $_="Estou feliz, passei em Matematica Discreta I, feliz!"; > > > > > > print"apareceu ",s/feliz//g," vezes..." > > > > > > On Dec 1, 2007 11:52 PM, Fernando Oliveira > wrote: > > > Desculpem!!! era golf?! eu não sabia!!! > > > Minha tacada! > > > > > > (ao invés de um perl -e, estou usando um perl -le...) > > > > > > print"apareceu ",$string=~s/feliz//g," vezes..."' > > > > > > > > > > > > > > > Em 01/12/07, Blabos de Blebe escreveu: > > > > Concordo. > > > > > > > > Eng de Software deve vir em primeiro lugar, não por mim, mas por quem > vai > > > > dar manutenção no meu código depois, que poderá me chamar de elegante > > > > ou porco, conforme o caso. > > > > > > > > Em produção eu preferiria a versão da FAQ, que aliás também é pequena > e > > > > por 3 caracteres não empatou com a minha: > > > > > > > > > > > > $_="Estou feliz, passei em Matematica Discreta I, feliz!"; > > > > $c++while/feliz/g;print"Apareceu $c vezes...\n" > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Dec 1, 2007 11:02 PM, Marco A P D'Andrade > wrote: > > > > > > > > > Gabriel, > > > > > > > > > > Bem, já deu pra perceber que existe mais de uma maneira de se fazer > > > > > algo, e o pessoal se empolga em descobrir alternativas. > > > > > > > > > > Mas lembre-se de se concentrar em qualquer uma que seja legível para > > > > > vc, e resolva o seu problema. > > > > > > > > > > Após algum tempo aprendendo as varias alternativas será interessante > > > > > se concentrar nas versões mais legiveis, pois versões de dificil > > > > > interpretação tendem a dificultar qualquer manutenção futura (em > > > > > termos de sistemas). > > > > > > > > > > Sds, > > > > > Marco Antonio > > > > > > > > > > > > > > > > > > > > > > > > > Em 01/12/07, Blabos de Blebe escreveu: > > > > > > Breno, digamos que ao inves de $string a variavel fosse $s, vc > teria > > > 48. > > > > > > > > > > > > Nesse caso eu apelaria para > > > > > > > > > > > > > > > > > > $_="Estou feliz, passei em Matematica Discreta I, feliz!"; > > > > > > $_=@_=/feliz/g;print"Apareceu $_ vezes...\n" > > > > > > > > > > > > > > > > > > E descartada a primeira linha, eu teria 44. > > > > > > Tá valendo? > > > > > > > > > > > > > > > > > > > > > > > > On Dec 1, 2007 9:49 PM, breno < breno em rio.pm.org> wrote: > > > > > > > > > > > > > Pra golfe, realmente. Mas como resposta para a pergunta do > Gabriel > > > > > > > (que está aprendendo Perl ainda) acho que a melhor é a que está > no > > > > > > > próprio FAQ do Perl, parecida com a versão do Lorn: > > > > > > > > > > > > > > ------------------8<----------------- > > > > > > > > > > > > > > $cont++ while $string =~ /feliz/g; > > > > > > > > > > > > > > ------------------8<----------------- > > > > > > > > > > > > > > Agora, se estamos falando de golfe, aí vai a minha tacada! > > > > > > > > > > > > > > (supondo a linha anterior como: my $string = "Estou feliz, > passei em > > > > > > > Matematica Discreta I, feliz!"; > > > > > > > e a saida como tendo que ser "apareceu X vezes..." e quebrar > linha > > > no > > > > > > final) > > > > > > > $c=@b=$string=~/feliz/g;print"apareceu $c vezes...\n" > > > > > > > > > > > > > > 53 caracteres :-) > > > > > > > > > > > > > > obs: redução da versão do Fernando, que aparentemente esqueceu > que a > > > > > > > diferença entre o print e o printf é grande :-P > > > > > > > > > > > > > > []s > > > > > > > > > > > > > > -b > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Dec 1, 2007 6:31 PM, Fernando Oliveira < > > > fernandocorrea em gmail.com> > > > > > > wrote: > > > > > > > > sim...mas ainda tenho menos caracteres... > > > > > > > > > > > > > > > > Em 01/12/07, Blabos de Blebe < blabos em gmail.com> escreveu: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Detalhe besta, como quase disse o fernando, m// no contexto > de > > > lista > > > > > > > > retorna $1, $2, ..., $N, > > > > > > > > > porém utilizando o modificador g, retorna todas as > substrings > > > que > > > > > > > > combinaram. Depois é só > > > > > > > > > contar o tamanho da lista. > > > > > > > > > > > > > > > > > > E, não, eu não sabia isso de cabeça, é que eu to nesse > capítulo > > > do > > > > > > > > livro... :p > > > > > > > > > > > > > > > > > > O exemplo do livro diz algo parecido com > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > my $string = "Estou feliz, passei em Matematica Discreta I, > > > feliz!"; > > > > > > > > > printf "Apareceu %s vezes...\n", $c=@b=$string=~/feliz/g; > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Na verdade era mais pra scalar( @b = $string =~ > /feliz/g > > > ); > > > > > > > > , que eu > > > > > > > > > achei longo, mas mais legível. > > > > > > > > > > > > > > > > > > Espero ter ajudado > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Dec 1, 2007 1:46 PM, Fernando Oliveira < > > > fernandocorrea em gmail.com> > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > 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: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > my $string = "Estou feliz, passei em Matematica Discreta > I, > > > feliz!"; > > > > > > > > > > printf "Apareceu %s vezes...\n", scalar($string =~ > > > s/(feliz)/$1/g); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 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{ > >