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 ole@gmail.com: On Nov 24, 2012 4:52 PM, Aureliano Guedes guedes_1...@hotmail.com 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 guedes_1...@hotmail.com: 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 (?mirna\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 (?tag...) 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 (?mirna) 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 guedes_1...@hotmail.com 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 ole@gmail.com: On Nov 24, 2012 4:52 PM, Aureliano Guedes guedes_1...@hotmail.com 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 guedes_1...@hotmail.com: 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 (?mirna\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 (?tag...) 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 (?mirna) 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 guedes_1...@hotmail.com: 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 bla...@gmail.com: 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 ole@gmail.com: On Nov 24, 2012 4:52 PM, Aureliano Guedes guedes_1...@hotmail.com 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 guedes_1...@hotmail.com: 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 (?mirna\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 (?tag...) 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 (?mirna) 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 tiago.pecze...@gmail.com: 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 br...@rio.pm.org wrote: Assim vcs me matam de vergonha =P []s -b 2012/11/24 Blabos de Blebe bla...@gmail.com: 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 ole@gmail.com: On Nov 24, 2012 4:52 PM, Aureliano Guedes guedes_1...@hotmail.com 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 guedes_1...@hotmail.com: 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 (?mirna\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 (?tag...) 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 (?mirna) 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