[Cascavel-pm] Balance Line

breno breno em rio.pm.org
Sábado Maio 1 11:06:33 PDT 2010


2010/4/21 Leonardo Gerheim <general_andrade em yahoo.com.br>:

E ai, Leonardo, alguma atualização no problema?

Além do que o Diogo falou, umas dicas:

> Olá pessoal;  * Sou iniciante em Perl

* vc disse ser iniciante em Perl. Nesse caso, recomendo colocar o
seguinte cabeçalho no topo de seus programas:

  use strict;
  use warnings;
  use diagnostics;

isso vai exigir que você declare variáveis ao usá-las pela primeira
vez, além de pegar alguns erros (e alertas) de execução. O
"diagnostics" exibe junto com o warning uma descrição do problema,
possiveis causas e soluções. Depois que seu programa estiver
executando sem warnings, pode remover o "use diagnostics" - mas deixe
o resto do cabeçalho.

>     Funciona assim, tenho dois arquivos ordenados, um com 3 colunas(arquivo
> de análise), ele possui várias linhas com a primeira coluna igual e o
> segundo arquivo(arquivo de comparação) que possui uma coluna apenas com uma
> incidência apenas da coluna do primeiro arquivo.

* em vez de dar uma descrição do que cada arquivo contém, que tal um
pequeno exemplo? Pelo que entendi, é assim:

 (arquivo1 - análise)
AAAAAAAAAA BBBBBBBBBBB CCCCCCCCCC
AAAAAAAAAA DDDDDDDDDDD EEEEEEEEEE
AAAAAAAAAA FFFFFFFFFFFF GGGGGGGGG
XXXXXXXXXXXXX YYYYYYYYYYY WWWWWWW
XXXXXXXXXXXXX VVVVVVVVVVV ZZZZZZZZZZZZZ

(arquivo2 - comparacao)
AAAAAAAAAA
JJJJJJJJJJJJJJJ

As colunas tem tamanho fixo? O separador é um espaço? Sempre tem pelo
menos 1 espaço?

>     Então eu leio cada linha de ambos os arquivos e comparo, caso sejam
> iguais eu conto os valores das colunas 2 e 3 do arquivo1, caso diferentes eu
> pego a próxima linha do arquivo de comparação.

O que você quer dizer com "conto os valores das colunas 2 e 3"? São
números? Você conta o número de ocorrências de cada entrada?

>     O código da função responsável por essa parte está assim após essa
> alterção que expliquei que preciso fazer, mas não funciona. Alguém pode me
> dar uma luz?

* "mas não funciona" não ajuda a gente a te ajudar. Você tem q deixar claro:

   - que dados vc está recebendo;
   - o que exatamente quer fazer com eles;
   - como está fazendo (código! isso vc mostrou)
   - o que deveria aparecer depois do processamento
   - o que apareceu em vez do que vc queria

Lembre-se que as pessoas da lista querem te ajudar, mas não estão
dentro do seu trabalho pra entender o problema ou olhar pro seu
terminal e ver o que há de errado :-)

Finalmente, vc mencionou um problema de desempenho. Fazer operações de
I/O, como ler arquivos, realmente é bastante custoso, mas tem certeza
que o gargalo do seu programa está nisso? Ou apenas nisso? Evite
otimizações cedo demais, mas uma vez que seu programa está pronto e o
desempenho está deixando a desejar, experimente rodar um code profiler
nele, como o Devel::NYTProf. Para isso, instale o Devel::NYTProf do
CPAN e chame seu programa passando para o perl a opção "-dNYTProf":

 > perl -dNYTProf meuprog.pl

Mais informações aqui:
    http://search.cpan.org/perldoc?Devel::NYTProf

Boa sorte!

[]s

-b


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