[Rio-pm] Comparação de arquivos

Tiago Peczenyj tiago.peczenyj em gmail.com
Domingo Novembro 25 11:47:39 PST 2012


nem perl. senão ele saberia que o correto é

$E = m*c**2

2012/11/25 Aureliano Guedes <guedes_1000 em 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: blabos em gmail.com
> > Date: Sat, 24 Nov 2012 22:03:50 -0200
>
> > To: rio-pm em 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.ufg em gmail.com>:
> > >
> > > On Nov 24, 2012 4:52 PM, "Aureliano Guedes" <guedes_1000 em 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: breno em rio.pm.org
> > >> > To: rio-pm em pm.org
> > >> > Subject: Re: [Rio-pm] Comparação de arquivos
> > >> >
> > >> > 2012/11/24 Aureliano Guedes <guedes_1000 em 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 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
>



-- 
Tiago B. Peczenyj
Linux User #405772

http://pacman.blog.br
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20121125/b560446e/attachment-0001.html>


Mais detalhes sobre a lista de discussão Rio-pm