[Cascavel-pm] Come linhas

Brinde Storm -Steven Koch s.koch em brindestorm.com
Sexta Maio 19 08:42:54 PDT 2006


Ola pessoal,

Tenho este script:

#Inicio-----------------------------------------------
    my $arquivo = "" ;

    $prefixo = 1;
    $referencia1 = param("referencia$prefixo");
    $refere1 = $referencia1;
    $refere1 =~ s/\..*//;
    $area1 = param("area$prefixo");
    $categoria1 = param("categoria$prefixo");
    
    $prefixo = 2;
    $referencia2 = param("referencia$prefixo");
    $refere2 = $referencia2;
    $refere2 =~ s/\..*//;
    $area2 = param("area$prefixo");
    $categoria2 = param("categoria$prefixo");
    
    $prefixo = 3;
    $referencia3 = param("referencia$prefixo");
    $refere3 = $referencia3;
    $refere3 =~ s/\..*//;
    $area3 = param("area$prefixo");
    $categoria3 = param("categoria$prefixo");
    
    $prefixo = 4;
    $referencia4 = param("referencia$prefixo");
    $refere4 = $referencia4;
    $refere4 =~ s/\..*//;
    $area4 = param("area$prefixo");
    $categoria4 = param("categoria$prefixo");
    
    $prefixo = 5;
    $referencia5 = param("referencia$prefixo");
    $refere5 = $referencia5;
    $refere5 =~ s/\..*//;
    $area5 = param("area$prefixo");
    $categoria5 = param("categoria$prefixo");
	
	$preenc = 0;
	$total = 0;
	open(CSV, "$arquivo_catalogo" );

	@arquivo_csv = <CSV>;
	close(CSV);
	    foreach(@arquivo_csv){
		@linha = split(";", $_);
		my $pesq = $linha[0];
		$pesq =~ s/\..*//;
		if("$pesq" eq "$refere1" or "$linha[0]" eq "$referencia1" ){
		    $linha[34] = $area1;
		    $linha[35] = $categoria1;
		}elsif("$pesq" eq "$refere2" or "$linha[0]" eq
"$referencia2" ){
		    $linha[34] = $area2;
		    $linha[35] = $categoria2;
		}elsif("$pesq" eq "$refere3" or "$linha[0]" eq
"$referencia3" ){
		    $linha[34] = $area3;
		    $linha[35] = $categoria3;
		}elsif("$pesq" eq "$refere4" or "$linha[0]" eq
"$referencia4" ){
		    $linha[34] = $area4;
		    $linha[35] = $categoria4;
		}elsif("$pesq" eq "$refere5" or "$linha[0]" eq
"$referencia5" ){
		    $linha[34] = $area5;
		    $linha[35] = $categoria5;
		}
		if(length($linha[0])>0){
		    $arquivo = $arquivo . join(";", @linha);
		}
		if((length($linha[34])>0) and (length($linha[35])>0)){
		    $preenc++;
		}
		$total++;
	    }
	
    #}
    open(CSV , ">$arquivo_catalogo");
    flock(CSV, 2);
	print CSV $arquivo or print "Não foi possivel guardar os dados, há
outra pessoa executando este comando: tente novamente";
    close(CSV);
#Fim-----------------------------------------------

Em suma o script varre o arquivo CSV e o "IF" verifica se o codigo.cor(a
expressão regular tira a cor para se comparado somente o codigo) é igual ao
codigo passado por parametro e coloca os valores enviados nos elementos 34 e
35.
Depois faz um join e guarda o arquivo.

O problema é que o script come linhas e embaralha o texto. Fiz o if antes de
fazer o join mas esta comendo 1 ou 2 linhas.
Tenho varias pessoas que acedem ao mesmo tempo este script.

O que pode estar acontecendo??????



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