[Cascavel-pm] Ideia para solucao de uma problema

Marco Lima marco.lima em e-via.com.br
Quinta Maio 4 11:01:41 PDT 2006


Daniel: 

Se a idéia é utilizar na forma de aplicação, o melhor a fazer e melhor a
forma de acesso as informação permitindo uma melhor manipulação desses
dados.

Sugiro dar uma olhada no DBD::CSV que pode ser utilizado com o DBI
permitindo que seja utilizado querys para seleção das informações
necessárias.

[  ]'s

> Em Qui, 2006-05-04 às 08:14 -0300, Patty Silva escreveu:
> > Pessoal.. Obrigada pela Ajuda!! :)
> > O problema em questao é:
> > Como armazenar todos os dados (OS ARQUIVOS .TXT) para gerar um outro
> > arquivo com esses dados..
> > No caso pegar todos os dados de uma dada data e armazena-los para
> > imprimir depois!! :) ou seja pegar o dados do arquivo MARIA.TXT
> > JOAO.TXT e armazenar e depois gravar em outro arquivo!! :)
> 
> Em primeiro lugar, recomendo usar o Text::xSV... pois ele permite que
> você leia o CSV direto do filehandle, utilizando o delimitador que você
> quiser, sem precisar trazer o arquivo inteiro para a memória...
> 
> Então vc vai passar por todos os arquivos originais, mas para evitar
> carregar tudo na memória, você pode abrir vários arquivos ao mesmo
> tempo, um para cada data e sair escrevendo neles de acordo com a data...
> 
> Como eu mexo com esse tipo de coisa quase sempre, acabei escrevendo
> rapidinho um exemplo...
> 
> #!/usr/bin/perl -w
> use strict; use warnings; use Text::xSV; use Symbol;
> my %arqs;
> my @files = qw(MARIA.TXT JOAO.TXT); # ou obter usando outro metodo
> foreach my $file (@files) {
> 	my $csv = Text::xSV->new();
> 	$csv->open_file($file);
> 	$csv->read_header();
> 	while ($csv->get_row()) {
> 		my ($data) = $csv->extract(qw(data));
> 		$data =~ s/[^a-zA-Z0-9]/_/gs;
> 		my $file = getfile($data,$csv);
> 		print $file $csv->format_row();
> 	}
> }
> foreach my $file (values %arqs) {
> 	close $file;
> }
> sub getfile {
> 	my $data = shift;
> 	my $csv = shift;
> 	return $arqs{$data} if exists $arqs{$data};
> 	my $file = gensym();
> 	open $file, '>', $data.'.TXT' or die $!;
> 	print $file $csv->format_header();
> 	$arqs{$data} = $file;
> }
> 
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
> 
> 

--

Marco Lima    
J. A. P. H.      

marco.lima em e-via.com.br
mago em rio.pm.org
mago em cpan.org

Sociedade Perl do Brasil   |   http://www.perl.org.br
Perl Monks                 |   http://www.perlmonks.org
Brasil Perl Mongers        |   http://brasil.pm.org

Register Linux User #355235
Slackware Linux, for the subgenius

"Ninguém é tão grande que não possa aprender, e nem tão pequeno que 
não possa ensinar" 


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