[Cascavel-pm] Programa gerar arquivo

André Garcia Carneiro andre.garcia.carneir em terra.com.br
Quinta Fevereiro 8 06:21:03 PST 2007


Patty,

Segue a minha sugestão...

use strict;
use warnings;
use Data::Dumper;


my (@line, em line2);
# @line conterá as linhas do arquivo de entrada file.csv
# @line2 conterá as linhas do arquivo de saída file2.csv

# Abrindo o arquivo de entrada file.csv
# Talvez alguns membros da lista digam que seria usar o open de três parâmetros, mas eu pessoalmente acho que
você não terá problemas com o de dois.
open FILE,"file.csv" or die "$!"; #arquivo de origem

# Criando o arquivo de saída file2.csv. Cuidado! Nesse caso, toda vez que o programa roda essa linha, um novo
arquivo será gerado. Se você quiser manter os dados no mesmo arquivo, deve substituir > por >>
open FILE2,">file2.csv" or die "$!"; #arquivo csv filtrado

while(<FILE>)
{
     @line = split /\,/,$_;
     if($line[2] eq 'UL') #supondo que o flag nunca muda de posição no arquivo file.csv
     {
           push @line2, {DATA => $line[0],NOME => $line[1], FLAG => $line[2], VARIAVEL => $line[3]}; # Só para
o caso de você querer utilizar esses dados depois.
            print FILE2 "$line[0],$line[1],$line[2],$line[3]\n";
      }
}

close FILE2;
close FILE;
print Dumper @line; #Veja como fica a estrutura criada em @line2
exit;
#Fim do script

Lembrando que existem maneiras muito mais elegantes de se fazer. Você pode, por exemplo, usar Class::CSV. 


---------- Cabeçalho original -----------

De: cascavel-pm-bounces+andre.garcia.carneir=terra.com.br em pm.org
Para: "Cascavel Perl Mongers" cascavel-pm em pm.org
Cópia: 
Data: Wed, 7 Feb 2007 13:56:48 -0300 (ART)
Assunto: [Cascavel-pm] Programa gerar arquivo

> Ola Pessoal..
> Alguem pode me dar uma ideia de como eu posso fazer um script em perl para ler um arquivo no formato
cvs(separados por virgula) nesse formato:
> DATA,NOME,FLAG,VARIAVEL
> 
> so que quando eu encontrar a FLAG="UL" eu gero um arquivo com os dados, ou seja, DATA,NOME,FLAG e VARIAVEL e
com nome de DATA.txt
> 
> mas a duvida q estou tendo eh.. como vou agrupar os dados e criar um arquivo correspondente...
> ex:
> 20070512 00:00:00,PARTICULAR,UL,NOME
> 20070512 00:00:00,PARTICULAR3,UL,NOMEP
> 20070509 00:00:00,PARTICULAR,UL1,NOME
> 20070512 00:00:00,PARTICULAR1,UL,NOME
> 20070512 00:00:00,PARTICULAR,UL4,NOMEP
> 20070509 00:00:00,PARTICULAR2,UL,NOME
> 20070512 00:00:00,PARTICULAR,UL,NOMEC
> 
> gerar o arquivo 20070512_00.txt com os dados:
> 20070512 00:00:00,PARTICULAR,UL,NOME
> 20070512 00:00:00,PARTICULAR3,UL,NOMEP
> 20070512 00:00:00,PARTICULAR,UL,NOMEC
> 
> gerar o arquivo 20070509_00.txt
> 20070509 00:00:00,PARTICULAR2,UL,NOME
> 
> 
> Alguem pode me da uma LUZ? :)
> 
> 
> 
> 
>  __________________________________________________
> Fale com seus amigos  de graça com o novo Yahoo! Messenger 
> http://br.messenger.yahoo.com/ 
> E-mail classificado pelo Identificador de Spam Inteligente Terra.
> Para alterar a categoria classificada, visite
>
http://mail.terra.com.br/protected_email/imail/imail.cgi?+_u=andre.garcia.carneir&_l=1,1170867443.176516.19950.balcomo.hst.terra.com.br,6063,Des15,Des15
> 
> Esta mensagem foi verificada pelo E-mail Protegido Terra.
> Scan engine: McAfee VirusScan / Atualizado em 06/02/2007 / Versão: 5.1.00/4957
> Proteja o seu e-mail Terra: http://mail.terra.com.br/
> 

--
André Garcia Carneiro
Developer(Perl/PHP)
Member of "São Paulo Perl Mongers" - http://sao-paulo.pm.org



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