[SP-pm] Ajuda em matriz

Luis Motta Campos luismottacampos em yahoo.co.uk
Quinta Agosto 9 00:54:03 PDT 2007


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}




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