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