[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