Re: [Rio-pm] Comparação de arquivos
> "Três coisas são infinitas: o universo, a paciência do Breno e a > estupidez humana. Mas, no que respeita ao universo, ainda não adquiri > a certeza absoluta." Albert Einstein não conhecia essa variável na época. > From: bla...@gmail.com > Date: Sat, 24 Nov 2012 22:03:50 -0200 > To: rio-pm@pm.org > Subject: Re: [Rio-pm] Comparação de arquivos > > "Três coisas são infinitas: o universo, a paciência do Breno e a > estupidez humana. Mas, no que respeita ao universo, ainda não adquiri > a certeza absoluta." > > 2012/11/24 Ole Peter Smith : > > > > On Nov 24, 2012 4:52 PM, "Aureliano Guedes" wrote: > >> > >> Breno, que ser meu orientador... hahaha... > > > > se eu era reitor universitario, eu daria o grau de dr honoratis para o este > > nosso breno, pela sua competencia, vastoconhecimento e infinita paciencia de > > enseminar conhecimentos > > > > 0le > > > > > >> > >> Enfim, ficou assim http://pastebin.com/zrpLGwQs > >> > >> Ha algo que você mudaria??? > >> > >> > Date: Sat, 24 Nov 2012 09:45:41 -0200 > >> > >> > From: br...@rio.pm.org > >> > To: rio-pm@pm.org > >> > Subject: Re: [Rio-pm] Comparação de arquivos > >> > > >> > 2012/11/24 Aureliano Guedes : > >> > > > >> > > Se não for ser muito chato, como faço para seguir a forma abaixo: > >> > > > >> > > > >> > >> 2) trocar de abordagem, fazendo seu parser ler linha a linha (sem > >> > >> modificar $/) e ir acumulando as linhas até encontrar um símbolo que > >> > >> indique nova entrada. > >> > > > >> > > seria algo do tipo: > >> > > > >> > > while (<$fh>){ > >> > > if(/primeira linha/){ > >> > > print $_; > >> > > } > >> > > elsif (/ultima linha/){ > >> > > #sair do loop > >> > > } > >> > > else { > >> > > print $_ > >> > > } > >> > > } > >> > > > >> > > >> > Algo como (atenção, código não testado): > >> > > >> > ---8<--- > >> > my %dados = (); > >> > my $mirna; > >> > my $acumulador; > >> > > >> > while (my $linha = <$fh>) { > >> > if ( $linha =~ m{tag magica (?\S+)} ) { > >> > $dados{$mirna} = $acumulador if $mirna; > >> > $mirna = $+{mirna}; > >> > $acumulador = q(); > >> > } > >> > else { > >> > $acumulador .= $linha; > >> > } > >> > } > >> > > >> > use DDP; p %dados; > >> > > >> > --->8--- > >> > > >> > O que isso faz (ou deveria fazer: já mencionei que não testei? > >> > Programar a essa hora da manhã não é meu forte, então favor > >> > desconsiderar qualquer besteira): > >> > > >> > 1) le o arquivo linha por linha, atribuindo o valor de cada linha a > >> > $linha (sem usar $_) > >> > 2) sempre que encontrar a tag mágica que separa entradas (estou > >> > assumindo que a tag indica um novo registro que pode ser chave do seu > >> > hash de dados: > >> > 2.1) se já estiver com um registro em memória ($mirna), bota os dados > >> > acumulados ($acumulador) dentro do hash; > >> > 2.2) atribui à $mirna o novo registro encontrado. Note que estou > >> > usando grupos nomeados na regex, fazendo (?...) em vez de apenas > >> > (...). Isso funciona a partir do 5.10.0 e me permite acessar os > >> > valores agrupados na regex por nome dentro do hash %+. No caso, > >> > acessei o grupo (?) fazendo $+{mirna}; > >> > 2.2) zera o acumulador. > >> > 3) se não encontrar a tag mágica, vai acumulando os dados. Dentro > >> > desse 'else' vc pode fazer coisas como "next if $linha =~ /.../" caso > >> > não queira guardar alguma linha, por exemplo. > >> > 4) Depois do while vc pode inspecionar %dados para saber se está tudo > >> > ok. > >> > > >> > > >> > Entendeu? > >> > > >> > []s > >> > > >> > -b > >> > ___ > >> > Rio-pm mailing list > >> > Rio-pm@pm.org > >> > http://mail.pm.org/mailman/listinfo/rio-pm > >> > >> ___ > >> Rio-pm mailing list > >> Rio-pm@pm.org > >> http://mail.pm.org/mailman/listinfo/rio-pm > > > > > > ___ > > Rio-pm mailing list > > Rio-pm@pm.org > > http://mail.pm.org/mailman/listinfo/rio-pm > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Comparação de arquivos
nem perl. senão ele saberia que o correto é $E = m*c**2 2012/11/25 Aureliano Guedes > > "Três coisas são infinitas: o universo, a paciência do Breno e a > > estupidez humana. Mas, no que respeita ao universo, ainda não adquiri > > a certeza absoluta." > > Albert Einstein não conhecia essa variável na época. > > > From: bla...@gmail.com > > Date: Sat, 24 Nov 2012 22:03:50 -0200 > > > To: rio-pm@pm.org > > Subject: Re: [Rio-pm] Comparação de arquivos > > > > "Três coisas são infinitas: o universo, a paciência do Breno e a > > estupidez humana. Mas, no que respeita ao universo, ainda não adquiri > > a certeza absoluta." > > > > 2012/11/24 Ole Peter Smith : > > > > > > On Nov 24, 2012 4:52 PM, "Aureliano Guedes" > wrote: > > >> > > >> Breno, que ser meu orientador... hahaha... > > > > > > se eu era reitor universitario, eu daria o grau de dr honoratis para o > este > > > nosso breno, pela sua competencia, vastoconhecimento e infinita > paciencia de > > > enseminar conhecimentos > > > > > > 0le > > > > > > > > >> > > >> Enfim, ficou assim http://pastebin.com/zrpLGwQs > > >> > > >> Ha algo que você mudaria??? > > >> > > >> > Date: Sat, 24 Nov 2012 09:45:41 -0200 > > >> > > >> > From: br...@rio.pm.org > > >> > To: rio-pm@pm.org > > >> > Subject: Re: [Rio-pm] Comparação de arquivos > > >> > > > >> > 2012/11/24 Aureliano Guedes : > > >> > > > > >> > > Se não for ser muito chato, como faço para seguir a forma abaixo: > > >> > > > > >> > > > > >> > >> 2) trocar de abordagem, fazendo seu parser ler linha a linha (sem > > >> > >> modificar $/) e ir acumulando as linhas até encontrar um símbolo > que > > >> > >> indique nova entrada. > > >> > > > > >> > > seria algo do tipo: > > >> > > > > >> > > while (<$fh>){ > > >> > > if(/primeira linha/){ > > >> > > print $_; > > >> > > } > > >> > > elsif (/ultima linha/){ > > >> > > #sair do loop > > >> > > } > > >> > > else { > > >> > > print $_ > > >> > > } > > >> > > } > > >> > > > > >> > > > >> > Algo como (atenção, código não testado): > > >> > > > >> > ---8<--- > > >> > my %dados = (); > > >> > my $mirna; > > >> > my $acumulador; > > >> > > > >> > while (my $linha = <$fh>) { > > >> > if ( $linha =~ m{tag magica (?\S+)} ) { > > >> > $dados{$mirna} = $acumulador if $mirna; > > >> > $mirna = $+{mirna}; > > >> > $acumulador = q(); > > >> > } > > >> > else { > > >> > $acumulador .= $linha; > > >> > } > > >> > } > > >> > > > >> > use DDP; p %dados; > > >> > > > >> > --->8--- > > >> > > > >> > O que isso faz (ou deveria fazer: já mencionei que não testei? > > >> > Programar a essa hora da manhã não é meu forte, então favor > > >> > desconsiderar qualquer besteira): > > >> > > > >> > 1) le o arquivo linha por linha, atribuindo o valor de cada linha a > > >> > $linha (sem usar $_) > > >> > 2) sempre que encontrar a tag mágica que separa entradas (estou > > >> > assumindo que a tag indica um novo registro que pode ser chave do > seu > > >> > hash de dados: > > >> > 2.1) se já estiver com um registro em memória ($mirna), bota os > dados > > >> > acumulados ($acumulador) dentro do hash; > > >> > 2.2) atribui à $mirna o novo registro encontrado. Note que estou > > >> > usando grupos nomeados na regex, fazendo (?...) em vez de > apenas > > >> > (...). Isso funciona a partir do 5.10.0 e me permite acessar os > > >> > valores agrupados na regex por nome dentro do hash %+. No caso, > > >> > acessei o grupo (?) fazendo $+{mirna}; > > >> > 2.2) zera o acumulador. > > >> > 3) se não encontrar a tag mágica, vai acumulando os dados. Dentro > > >> > desse 'else' vc pode fazer coisas como "next if $linha =~ /.../" > caso > > >> > não queira guardar alguma linha, por exemplo. > > >> > 4) Depois do while vc pode inspecionar %dados para saber se está > tudo > > >> > ok. > > >> > > > >> > > > >> > Entendeu? > > >> > > > >> > []s > > >> > > > >> > -b > > >> > ___ > > >> > Rio-pm mailing list > > >> > Rio-pm@pm.org > > >> > http://mail.pm.org/mailman/listinfo/rio-pm > > >> > > >> ___ > > >> Rio-pm mailing list > > >> Rio-pm@pm.org > > >> http://mail.pm.org/mailman/listinfo/rio-pm > > > > > > > > > ___ > > > Rio-pm mailing list > > > Rio-pm@pm.org > > > http://mail.pm.org/mailman/listinfo/rio-pm > > ___ > > Rio-pm mailing list > > Rio-pm@pm.org > > http://mail.pm.org/mailman/listinfo/rio-pm > > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > -- Tiago B. Peczenyj Linux User #405772 http://pacman.blog.br ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Comparação de arquivos
2012/11/24 Aureliano Guedes : > Tem muitas coisas que posso desconsiderar desse perlcritc, ne?! > No livro, cada recomendação acompanha uma breve discussão com motivações, edge cases, exemplos e alternativas. O ideal é que vc leia e tire suas próprias conclusões. Depois, pode criar seu próprio arquivo ".perlcriticrc" apenas com as regras que deseja reforçar. Algumas pessoas criaram suas próprias regras também, e colocaram no CPAN. Procure por "Perl::Critic" e "Perl::Critic::Profile" para mais detalhes. Eu gosto bastante do "Perl Best Practices". Preste apenas um pouco mais de atenção quando o Damian recomenda um ou outro módulo: o livro é antigo (já tem mais de 7 anos), e muitos módulos deixaram de ser mantidos ou provaram ser mais problemáticos do que benéficos, enquanto outros padrões de-facto surgiram (como Moose). Para uma referência mais atualizada dos módulos citados, veja https://www.socialtext.net/perl5/pbp_module_recommendation_commentary Independente do que escolha, o mais importante é consistência. Se escolher um padrão ou conjunto de regras particulares de desenvolvimento, certifique-se de que elas valem para todo o código :) []s -b ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Comparação de arquivos
Assim vcs me matam de vergonha =P []s -b 2012/11/24 Blabos de Blebe : > "Três coisas são infinitas: o universo, a paciência do Breno e a > estupidez humana. Mas, no que respeita ao universo, ainda não adquiri > a certeza absoluta." > > 2012/11/24 Ole Peter Smith : >> >> On Nov 24, 2012 4:52 PM, "Aureliano Guedes" wrote: >>> >>> Breno, que ser meu orientador... hahaha... >> >> se eu era reitor universitario, eu daria o grau de dr honoratis para o este >> nosso breno, pela sua competencia, vastoconhecimento e infinita paciencia de >> enseminar conhecimentos >> >> 0le >> >> >>> >>> Enfim, ficou assim http://pastebin.com/zrpLGwQs >>> >>> Ha algo que você mudaria??? >>> >>> > Date: Sat, 24 Nov 2012 09:45:41 -0200 >>> >>> > From: br...@rio.pm.org >>> > To: rio-pm@pm.org >>> > Subject: Re: [Rio-pm] Comparação de arquivos >>> > >>> > 2012/11/24 Aureliano Guedes : >>> > > >>> > > Se não for ser muito chato, como faço para seguir a forma abaixo: >>> > > >>> > > >>> > >> 2) trocar de abordagem, fazendo seu parser ler linha a linha (sem >>> > >> modificar $/) e ir acumulando as linhas até encontrar um símbolo que >>> > >> indique nova entrada. >>> > > >>> > > seria algo do tipo: >>> > > >>> > > while (<$fh>){ >>> > > if(/primeira linha/){ >>> > > print $_; >>> > > } >>> > > elsif (/ultima linha/){ >>> > > #sair do loop >>> > > } >>> > > else { >>> > > print $_ >>> > > } >>> > > } >>> > > >>> > >>> > Algo como (atenção, código não testado): >>> > >>> > ---8<--- >>> > my %dados = (); >>> > my $mirna; >>> > my $acumulador; >>> > >>> > while (my $linha = <$fh>) { >>> > if ( $linha =~ m{tag magica (?\S+)} ) { >>> > $dados{$mirna} = $acumulador if $mirna; >>> > $mirna = $+{mirna}; >>> > $acumulador = q(); >>> > } >>> > else { >>> > $acumulador .= $linha; >>> > } >>> > } >>> > >>> > use DDP; p %dados; >>> > >>> > --->8--- >>> > >>> > O que isso faz (ou deveria fazer: já mencionei que não testei? >>> > Programar a essa hora da manhã não é meu forte, então favor >>> > desconsiderar qualquer besteira): >>> > >>> > 1) le o arquivo linha por linha, atribuindo o valor de cada linha a >>> > $linha (sem usar $_) >>> > 2) sempre que encontrar a tag mágica que separa entradas (estou >>> > assumindo que a tag indica um novo registro que pode ser chave do seu >>> > hash de dados: >>> > 2.1) se já estiver com um registro em memória ($mirna), bota os dados >>> > acumulados ($acumulador) dentro do hash; >>> > 2.2) atribui à $mirna o novo registro encontrado. Note que estou >>> > usando grupos nomeados na regex, fazendo (?...) em vez de apenas >>> > (...). Isso funciona a partir do 5.10.0 e me permite acessar os >>> > valores agrupados na regex por nome dentro do hash %+. No caso, >>> > acessei o grupo (?) fazendo $+{mirna}; >>> > 2.2) zera o acumulador. >>> > 3) se não encontrar a tag mágica, vai acumulando os dados. Dentro >>> > desse 'else' vc pode fazer coisas como "next if $linha =~ /.../" caso >>> > não queira guardar alguma linha, por exemplo. >>> > 4) Depois do while vc pode inspecionar %dados para saber se está tudo >>> > ok. >>> > >>> > >>> > Entendeu? >>> > >>> > []s >>> > >>> > -b >>> > ___ >>> > Rio-pm mailing list >>> > Rio-pm@pm.org >>> > http://mail.pm.org/mailman/listinfo/rio-pm >>> >>> ___ >>> Rio-pm mailing list >>> Rio-pm@pm.org >>> http://mail.pm.org/mailman/listinfo/rio-pm >> >> >> ___ >> Rio-pm mailing list >> Rio-pm@pm.org >> http://mail.pm.org/mailman/listinfo/rio-pm > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Comparação de arquivos
2012/11/25 Tiago Peczenyj : > nem perl. senão ele saberia que o correto é > > $E = m*c**2 > ou, para cobrir todos os casos, -8<- use bignum; use constant c => 299_792_458; my $m = massa(); my $p = momentum(); my $E = sqrt( ($m * c**2)**2 + ($p * c)**2 ); ->8- =P []s -b ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] Comparação de arquivos
vergonha nada, orgulho, rapaz! 0le Send via Android On Nov 26, 2012 1:53 AM, "breno" wrote: > Assim vcs me matam de vergonha =P > > []s > > -b > > 2012/11/24 Blabos de Blebe : > > "Três coisas são infinitas: o universo, a paciência do Breno e a > > estupidez humana. Mas, no que respeita ao universo, ainda não adquiri > > a certeza absoluta." > > > > 2012/11/24 Ole Peter Smith : > >> > >> On Nov 24, 2012 4:52 PM, "Aureliano Guedes" > wrote: > >>> > >>> Breno, que ser meu orientador... hahaha... > >> > >> se eu era reitor universitario, eu daria o grau de dr honoratis para o > este > >> nosso breno, pela sua competencia, vastoconhecimento e infinita > paciencia de > >> enseminar conhecimentos > >> > >> 0le > >> > >> > >>> > >>> Enfim, ficou assim http://pastebin.com/zrpLGwQs > >>> > >>> Ha algo que você mudaria??? > >>> > >>> > Date: Sat, 24 Nov 2012 09:45:41 -0200 > >>> > >>> > From: br...@rio.pm.org > >>> > To: rio-pm@pm.org > >>> > Subject: Re: [Rio-pm] Comparação de arquivos > >>> > > >>> > 2012/11/24 Aureliano Guedes : > >>> > > > >>> > > Se não for ser muito chato, como faço para seguir a forma abaixo: > >>> > > > >>> > > > >>> > >> 2) trocar de abordagem, fazendo seu parser ler linha a linha (sem > >>> > >> modificar $/) e ir acumulando as linhas até encontrar um símbolo > que > >>> > >> indique nova entrada. > >>> > > > >>> > > seria algo do tipo: > >>> > > > >>> > > while (<$fh>){ > >>> > > if(/primeira linha/){ > >>> > > print $_; > >>> > > } > >>> > > elsif (/ultima linha/){ > >>> > > #sair do loop > >>> > > } > >>> > > else { > >>> > > print $_ > >>> > > } > >>> > > } > >>> > > > >>> > > >>> > Algo como (atenção, código não testado): > >>> > > >>> > ---8<--- > >>> > my %dados = (); > >>> > my $mirna; > >>> > my $acumulador; > >>> > > >>> > while (my $linha = <$fh>) { > >>> > if ( $linha =~ m{tag magica (?\S+)} ) { > >>> > $dados{$mirna} = $acumulador if $mirna; > >>> > $mirna = $+{mirna}; > >>> > $acumulador = q(); > >>> > } > >>> > else { > >>> > $acumulador .= $linha; > >>> > } > >>> > } > >>> > > >>> > use DDP; p %dados; > >>> > > >>> > --->8--- > >>> > > >>> > O que isso faz (ou deveria fazer: já mencionei que não testei? > >>> > Programar a essa hora da manhã não é meu forte, então favor > >>> > desconsiderar qualquer besteira): > >>> > > >>> > 1) le o arquivo linha por linha, atribuindo o valor de cada linha a > >>> > $linha (sem usar $_) > >>> > 2) sempre que encontrar a tag mágica que separa entradas (estou > >>> > assumindo que a tag indica um novo registro que pode ser chave do seu > >>> > hash de dados: > >>> > 2.1) se já estiver com um registro em memória ($mirna), bota os dados > >>> > acumulados ($acumulador) dentro do hash; > >>> > 2.2) atribui à $mirna o novo registro encontrado. Note que estou > >>> > usando grupos nomeados na regex, fazendo (?...) em vez de apenas > >>> > (...). Isso funciona a partir do 5.10.0 e me permite acessar os > >>> > valores agrupados na regex por nome dentro do hash %+. No caso, > >>> > acessei o grupo (?) fazendo $+{mirna}; > >>> > 2.2) zera o acumulador. > >>> > 3) se não encontrar a tag mágica, vai acumulando os dados. Dentro > >>> > desse 'else' vc pode fazer coisas como "next if $linha =~ /.../" caso > >>> > não queira guardar alguma linha, por exemplo. > >>> > 4) Depois do while vc pode inspecionar %dados para saber se está tudo > >>> > ok. > >>> > > >>> > > >>> > Entendeu? > >>> > > >>> > []s > >>> > > >>> > -b > >>> > ___ > >>> > Rio-pm mailing list > >>> > Rio-pm@pm.org > >>> > http://mail.pm.org/mailman/listinfo/rio-pm > >>> > >>> ___ > >>> Rio-pm mailing list > >>> Rio-pm@pm.org > >>> http://mail.pm.org/mailman/listinfo/rio-pm > >> > >> > >> ___ > >> Rio-pm mailing list > >> Rio-pm@pm.org > >> http://mail.pm.org/mailman/listinfo/rio-pm > > ___ > > Rio-pm mailing list > > Rio-pm@pm.org > > http://mail.pm.org/mailman/listinfo/rio-pm > ___ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm > ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm