[Cascavel-pm] Informacoes no arquivo

Alceu R. de Freitas Jr. glasswalk3r em yahoo.com.br
Terça Abril 18 15:55:28 PDT 2006


Oi Patty,

Comentei seu email abaixo.

--- Patty Silva <ptfzs em yahoo.com.br> escreveu:

> Pessoal..
>  o arquivo nao eh por TAB

Então os registros estão separados por espaços, creio
eu? Seria melhor se você nos contasse.
 
>  Eu quero pegar somente as VARIAVEIS que comecem com
> V , no caso
>  V-NOME, V-END.. pq as outras nao possuem valor..var
> TEL , var FAX ...

Existem várias maneiras de resolver isso. Pode ser com
REGEX, mas se você sabe de antemão quais são as
variáveis desejadas, pode ser mais rápido comparar
elas usando o operador "eq" e colocar isso num loop.

>  Como sugerido pelo amigo, fiz:
>  
>  open(FH, '<teste.txt');
>  @table = <FH>;

Não faça isso, a menos que tenha certeza que o arquivo
é pequeno e você tenha memória sobrando. Se for esse o
caso, essa é a forma mais rápida.

Do contrário, use

while (<FH>) {

# faz algum processamento

}

>  shift @table; #descarta primeira linha

Tem uma variável do Perl que possui o número da linha
atual. Alguém saberia dizer qual?

# descarta a primeira linha
next if $numero_linha = 1;

>  foreach(@table)
>  {
>  # Esse UNDEF é pq possui espaco em branco antes da
> variavel..
>  (undef,$var,$tipo,$time,$id,$test) = split /\s+/,
> $_;
>  print "VAR: $var TIPO: $tipo TESTE: $test \n";
>  
>  
>  }
>  
>  So que esta pegando tudo...

Se está pegando tudo, seu separador de campos não está
correto. Verifique se você possui espaços como
separadores.

> oBS: pensei em utilizar uma expressao regulara para
> verificar se a $VAR cmeca por V?? se alguem puder me
> ajudar!!

Pode ser. Mas se você precisa de performance, eu
tentaria incluir os valores exatos das variáveis dos
scripts assim:

if ( ( $_ eq 'VAR1' ) or ( $_ eq 'VAR2' ) ) {

# faz alguma coisa

}

Com regex ficaria algo assim:

if (/^V\w+) {

# faz alguma coisa

}

Para testar a diferença de performance, tente usar o
módulo Benchmark.

[]'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


		
_______________________________________________________ 
Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no celular e anti-spam realmente eficaz. 
http://br.info.mail.yahoo.com/


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