[SP-pm] Ajuda em matriz

Fernando Oliveira fernandocorrea em gmail.com
Quinta Agosto 9 05:52:21 PDT 2007


Posso brincar tb?!

já q é não didatico, eu pesso um GOLF!!!

perl -MData::Dumper -ne 's#^x{6}(\w+?)x{5}(\d+)x{6}([CV])$#$d{$1}+=$3
eq"C"?$2:-$2#e;END{print Dumper\%d}' data

Em 09/08/07, Luis Motta Campos <luismottacampos em yahoo.co.uk> escreveu:
>
> On Aug 8, 2007, at 10:46 PM, Daniel Projetos wrote:
> > All,
> > Estou com o seguinte problema: Tenho um arquivo texto com linhas
> > assim:
> >
> > xxxxxxPETR4xxxxx10000xxxxxxC
> > xxxxxxPETR4xxxxx12000xxxxxxV
> > xxxxxxVALE5xxxxx10000xxxxxxC
> > xxxxxxVALE5xxxxx14000xxxxxxV
> >
> > Eu separei o número de caracteres e fiz da seguinte forma:
> > ex.:
> >
> > PETR4 10000 C
> > PETR4 12000 V
> >
> > Preciso fazer uma matriz que, sempre que tiver o mesmo nome, ou
> > seja neste
> > caso, PETR4 ele some os valores depois no caso de venda (V) e subtraia
> > compra (C)...
>
>    Uhg. Problema simples.
>    Resposta simples:
>
> #!perl
> # ATENCAO: Isto nao eh didatico, eh apenas um exercicio.
> # ;) Use por sua conta e risco.
> use strict;
> use warnings;
>
> my $data;
>
> s{^x{6}([A-Z0-9]+)x{5}(\d+)x{6}([CV])$}
>      { $data->{$1} += ( $3 eq 'C' ? $2 : ( -1 * $2 ) ) }emx
>          foreach (<DATA>);
>
> use Data::Dumper;
> print Dumper($data), $/;
>
> __DATA__
> xxxxxxPETR4xxxxx10000xxxxxxC
> xxxxxxPETR4xxxxx12000xxxxxxV
> xxxxxxVALE5xxxxx10000xxxxxxC
> xxxxxxVALE5xxxxx14000xxxxxxV
>
>
>
> --
> Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
> Perl fanatic evangelist, and amateur {cook, photographer}
>
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>



-- 
[]'s Fernando
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/saopaulo-pm/attachments/20070809/2d83f776/attachment.html 


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