[Cascavel-pm] manipulacao de dados em variavel

Vinicius Alves perl em atechs.com.br
Quarta Julho 27 08:37:15 PDT 2005


Tarik, explicando o código que mandei:

# roda o código chamando
# perl seuscript.pl seus_dados.txt

use strict;

my (@dados);  #declara o array @dados

while(<>) {  #para cada linha do seu_codigo.txt
        next if /^(CODIGO|=|\s*$)/;  #pula para a próxima se a linha começar
                                                     #com CODIGO, = ou se
estiver em branco

 push (@dados,split(/\s+/,$_));  #separe a linha restante nos espaços,
restando
                                                 #o 1234  e o TESTE como
dois ítens distintos e
                                                 #coloque-os dentro de
@dados
}

Pronto. Você poderá acessá-los através de $dados[0] e $dados[1];

Se continuar em dúvida, avise.

[]´s
Vinicius

----- Original Message ----- 
From: "Tarik Gregorio" <tgregorio7 em gmail.com>
To: "Cascavel Perl Mongers" <cascavel-pm em pm.org>
Sent: Wednesday, July 27, 2005 12:24 PM
Subject: Re: [Cascavel-pm] manipulacao de dados em variavel


Entendi Alceu, e estava mesmo a procura de um bom livro de perl. So
que nao to conseguindo resolver o cabecalho e pegar a 5a linha. Sempre
vai ser a 5a linha que irei pegar.

Em 27/07/05, Alceu R. de Freitas Jr.<glasswalk3r em yahoo.com.br> escreveu:
>
> --- Tarik Gregorio <tgregorio7 em gmail.com> escreveu:
>
> >   To com uma duvida, tenho uma variavel $dados que
> > contem os dados abaixo:
> >
> >
> > CODIGO     DESCRICAO
> > ==========
> > ==================================================
> >
> > 1234       TESTE
> >
> > Preciso pegar somente o 1234 e TESTE e separar em
> > duas variaveis
> > diferentes. Nao estou conseguindo fazer isso, alguem
> > pode me ajudar??
>
> Estou assumindo que o cabeçalho não faz parte do
> problema, ok?
>
> Supondo que a variável $dados contenha:
>
> 1234       TESTE
>
> e que o espaço entre elas seja formado por espaços
> mesmo, uma solução seria essa:
>
> $dados =~ s/\s+/|/g;
> @lista_dados = split( /|/, $dados );
>
> Isso simplesmente elimina os espaços entre as duas
> strings e troca eles por um pipe ("|"). O pipe passa a
> ser o "separador" de dados. A função split() vai pegar
> cada ítem "separado" pelo pipe e adicionar a um índice
> do array @lista_dados. Você poderia adicionar isso a
> um hash também de forma semelhante.
>
> A forma de criar essa lista de dados pode variar
> bastante... por exemplo, se você obteve a string de
> $dados lendo de um arquivo texto, teria que fazer isso
> primeiro:
>
> chomp( $dados );
>
> para remover a quebra de linha. Se você tiver espaços
> antes e depois da string, pode ter que eliminar estar
> também antes de usar o split():
>
> $dados =~ s/^\s+//g;
> $dados =~ s/\s+$//g;
>
> Existe muitas formas de fazer isso com Perl, uma vez
> que esse é um problema bastante comum. Recomendo você
> estudar:
>
> perldoc perlre
> perldoc -f split
> perldoc -f join
> perldoc -f map
> perldoc -f grep
>
> Dois livros que vão lhe ajudar bastante:
> Learning Perl - editora O'Reilly (somente em inglês)
> Gerenciamento de dados com Perl - em português,
> procure em algum site de livros.
>
> []'s
>
>
>
>
> Alceu Rodrigues de Freitas Junior
> --------------------------------------
> glasswalk3r em yahoo.com.br
> http://www.imortais.cjb.net
> -----------------------------------------------------------------------
> A well-used door needs no oil on its hinges.
> A swift-flowing stream does not grow stagnant.
> Neither sound nor thoughts can travel through a vacuum.
> Software rots if not used.
> These are great mysteries -- The Tao Of Programming, 5.1
>
> __________________________________________________
> Converse com seus amigos em tempo real com o Yahoo! Messenger
> http://br.download.yahoo.com/messenger/
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>


-- 
Tarik Faria da Silva Gregorio
_______________________________________________
Cascavel-pm mailing list
Cascavel-pm em pm.org
http://mail.pm.org/mailman/listinfo/cascavel-pm



-- 
No virus found in this incoming message.
Checked by AVG Anti-Virus.
Version: 7.0.338 / Virus Database: 267.9.5/58 - Release Date: 25/7/2005




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