<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman,new york,times,serif;font-size:12pt"><div>Olá pessoal; * Sou iniciante em Perl<br><br> Já construi uma aplicação que atendia nossas nessecidades, entretanto os arquivos para análise ficaram maiores e a aplicação passou a não mais satisfazer, vou explicar. O motivo é porque a aplicação para fazer as comparações e contagens usava como base arquivos de Kb e Mb no máximo, hoje trabalhamos com arquivos muito maiores. <br> O que preciso é fazer um balance line, pois ele vai ler o arquivo uma única vez, diferentemente da aplicação que desenvolvi que lia o arquivo muitas vezes. <br> 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.<br> 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.<br> 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?<br><br>Abraço.<br><br>sub Alel_A{<br> <br> $contCol1=0;<br> $contCol2=0; <br> <br> open(FILE1,$ARGV[1]); #Arquivo que será analisados<br> open(FILE2,$ARGV[0]); # Arquivo para comparação<br> @file2=<FILE2>; #usei um vetor para usar o shift<br><br> $compara=shift(@file2);<br> chop $snp;<br>
<br> while (<FILE1>){ <br> if($_ =~ m/$compara/){ <br> $contCol1++ if $_ =~ m/A\s*A/; <br> $ContCol2++ if $_ =~ m/A\s*B/; <br> }elsif($_ !=~ m/$compara/){<br> $snp=shift(@file2);<br> chop $compara; <br> }<br> <br> } <br><br> print "TENHO UMA FUNÇÃO QUE CALCULA A FREQUENCIA DESSAS INCIDÊNCIAS
AQUI";<br> <br>}<br><br> O algoritmo seria mais ou menos isso que tenho em mente, mas não consegui êxito.<br><br><p class="MsoNormal"><span style="font-size: 11pt; font-family: "sans-serif"; color: rgb(31, 73, 125);">abrir arquivo_a</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "sans-serif"; color: rgb(31, 73, 125);">abrir arquivo_b</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "sans-serif"; color: rgb(31, 73, 125);"> </span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "sans-serif"; color: rgb(31, 73, 125);">ler registro_a</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "sans-serif"; color: rgb(31, 73, 125);">ler registro_b</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "sans-serif"; color: rgb(31, 73, 125);"> </span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "sans-serif"; color: rgb(31, 73, 125);">enquanto (não fim_arquivo_a) e (não fim_arquivo_b)</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "sans-serif"; color: rgb(31, 73, 125);"> se (chave_a = chave_b)</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "sans-serif"; color: rgb(31, 73, 125);"> processa registros</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "sans-serif"; color: rgb(31, 73, 125);"> ler registro_b</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "sans-serif"; color: rgb(31, 73, 125);"> senão se (chave_a < chave_b)</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "sans-serif"; color: rgb(31, 73, 125);"> ler registro_a</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "sans-serif"; color: rgb(31, 73, 125);"> senão </span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "sans-serif"; color: rgb(31, 73, 125);"> ler registro_b</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "sans-serif"; color: rgb(31, 73, 125);"> fim_se</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "sans-serif"; color: rgb(31, 73, 125);"> fim_se</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "sans-serif"; color: rgb(31, 73, 125);">fim_enquanto</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "sans-serif"; color: rgb(31, 73, 125);"> </span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "sans-serif"; color: rgb(31, 73, 125);">fechar arquivo_a</span></p>
<p class="MsoNormal"><span style="font-size: 11pt; font-family: "sans-serif"; color: rgb(31, 73, 125);">fechar arquivo_b</span></p><br></div>
</div><br>
</body></html>