[Cascavel-pm] Informacoes no arquivo

Luis Motta Campos monsieur_champs em yahoo.com.br
Quarta Abril 19 02:37:11 PDT 2006


Igor Sutton Lopes wrote:
> Meus dois centavos:
> 
> #!/usr/bin/perl
> 
> use strict;
> use warnings;
> use Data::Dumper;
> 
> my @data;
### > foreach (<DATA>) {
###
### PATCHED BY Monsieur Champs
###
# Igor, amigos, acho que vale à pena estressar isto:
# Quando vocês conhecem o tamanho do arquivo,
# Ou quando tem certeza de que os dados não são muitos,
# podem usar foreach() sem problemas.
# Mas, na maior parte das vezes, é considerado boa prática
# ler de um filehandle usando while(), para obter APENAS
# UMA LINHA DE CADA VEZ.
# Desta forma, mesmo que o usuário sacaneie e mande um arquivo
# com 10 milhões de linhas, seu programa ainda vai sobreviver.

# E você ainda pode se aproveitar dos atalhos
# de sempre pra atribuir a $_:
while( <DATA> ){
     # mais um detalhe: a Patty Silva disse que as linhas
     # começavam com espaço... por isso precisei acrescentar um
     # \s* logo no início da regex.
>   next unless m/^\s*(V-\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+\S+\s*$/o;
>   push @data, { tipo => $1, time => $2, id => $3, teste => $4 };
> }
> 
> print Dumper \@data;
> 
> __DATA__
> var TEL
>  
> var FIL
>  
> var FAX
>  
> var ALTSE total stns 224 # non-missing obs 114
>  
> TIPO TIME ID TESTE
> V-NOME B1910 300.00 001111 X
> V-NOME B1910 300.00 002222 C
> V-NOME B1910 300.00 003333 X
> V-NOME B1910 300.00 004444 C
>  
> TIPO TIME ID TESTE
> V-END B1910 300.00 001111 X
> V-END B1910 300.00 002222 C
> V-END B1910 300.00 003333 X
> V-END B1910 300.00 004444 C
> </code>

   Eu achei o programa do Igor perfeito, exceto por estes dois pequenos 
detalhes. Tenho certeza de que os monges mais antigos desta lista 
concordam comigo, e devem certamente ter seus próprios comentários... 
afinal, TIMTOWTDI.

   Putamplexos, e parabéns pelo belo código, Igor!
-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  Luis Motta Campos is Software Engineer, Oracle OCP/DBA, Un*x
  Sysadmin, Member of {Lisbon,São Paulo,Cascavel,Brasil,London}
  Perl Mongers and Perl Fanatic Evangelist
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

		
_______________________________________________________ 
Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu celular. Registre seu aparelho agora! 
http://br.mobile.yahoo.com/mailalertas/ 
 



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