<p><br>
On Nov 24, 2012 4:52 PM, "Aureliano Guedes" <<a href="mailto:guedes_1000@hotmail.com">guedes_1000@hotmail.com</a>> wrote:<br>
><br>
> Breno, que ser meu orientador... hahaha...</p>
<p>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!!!!</p>
<p>0le<br>
><br>
> Enfim, ficou assim <a href="http://pastebin.com/zrpLGwQs">http://pastebin.com/zrpLGwQs</a><br>
><br>
> Ha algo que você mudaria??? <br>
><br>
> > Date: Sat, 24 Nov 2012 09:45:41 -0200<br>
><br>
> > From: <a href="mailto:breno@rio.pm.org">breno@rio.pm.org</a><br>
> > To: <a href="mailto:rio-pm@pm.org">rio-pm@pm.org</a><br>
> > Subject: Re: [Rio-pm] Comparação de arquivos<br>
> > <br>
> > 2012/11/24 Aureliano Guedes <<a href="mailto:guedes_1000@hotmail.com">guedes_1000@hotmail.com</a>>:<br>
> > ><br>
> > > Se não for ser muito chato, como faço para seguir a forma abaixo:<br>
> > ><br>
> > ><br>
> > >> 2) trocar de abordagem, fazendo seu parser ler linha a linha (sem<br>
> > >> modificar $/) e ir acumulando as linhas até encontrar um símbolo que<br>
> > >> indique nova entrada.<br>
> > ><br>
> > > seria algo do tipo:<br>
> > ><br>
> > > while (<$fh>){<br>
> > > if(/primeira linha/){<br>
> > > print $_;<br>
> > > }<br>
> > > elsif (/ultima linha/){<br>
> > > #sair do loop<br>
> > > }<br>
> > > else {<br>
> > > print $_<br>
> > > }<br>
> > > }<br>
> > ><br>
> > <br>
> > Algo como (atenção, código não testado):<br>
> > <br>
> > ---------------8<---------------<br>
> > my %dados = ();<br>
> > my $mirna;<br>
> > my $acumulador;<br>
> > <br>
> > while (my $linha = <$fh>) {<br>
> > if ( $linha =~ m{tag magica (?<mirna>\S+)} ) {<br>
> > $dados{$mirna} = $acumulador if $mirna;<br>
> > $mirna = $+{mirna};<br>
> > $acumulador = q();<br>
> > }<br>
> > else {<br>
> > $acumulador .= $linha;<br>
> > }<br>
> > }<br>
> > <br>
> > use DDP; p %dados;<br>
> > <br>
> > --------------->8---------------<br>
> > <br>
> > O que isso faz (ou deveria fazer: já mencionei que não testei?<br>
> > Programar a essa hora da manhã não é meu forte, então favor<br>
> > desconsiderar qualquer besteira):<br>
> > <br>
> > 1) le o arquivo linha por linha, atribuindo o valor de cada linha a<br>
> > $linha (sem usar $_)<br>
> > 2) sempre que encontrar a tag mágica que separa entradas (estou<br>
> > assumindo que a tag indica um novo registro que pode ser chave do seu<br>
> > hash de dados:<br>
> > 2.1) se já estiver com um registro em memória ($mirna), bota os dados<br>
> > acumulados ($acumulador) dentro do hash;<br>
> > 2.2) atribui à $mirna o novo registro encontrado. Note que estou<br>
> > usando grupos nomeados na regex, fazendo (?<tag>...) em vez de apenas<br>
> > (...). Isso funciona a partir do 5.10.0 e me permite acessar os<br>
> > valores agrupados na regex por nome dentro do hash %+. No caso,<br>
> > acessei o grupo (?<mirna>....) fazendo $+{mirna};<br>
> > 2.2) zera o acumulador.<br>
> > 3) se não encontrar a tag mágica, vai acumulando os dados. Dentro<br>
> > desse 'else' vc pode fazer coisas como "next if $linha =~ /.../" caso<br>
> > não queira guardar alguma linha, por exemplo.<br>
> > 4) Depois do while vc pode inspecionar %dados para saber se está tudo ok.<br>
> > <br>
> > <br>
> > Entendeu?<br>
> > <br>
> > []s<br>
> > <br>
> > -b<br>
> > _______________________________________________<br>
> > Rio-pm mailing list<br>
> > <a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
> > <a href="http://mail.pm.org/mailman/listinfo/rio-pm">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
><br>
> _______________________________________________<br>
> Rio-pm mailing list<br>
> <a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
> <a href="http://mail.pm.org/mailman/listinfo/rio-pm">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
</p>