[SP-pm] Problema com opendir/readdir

claudio at dpreferencial.com.br claudio at dpreferencial.com.br
Tue May 5 05:23:09 PDT 2009


Grande Breno, Bom dia!

Obrigado pela sua atenção e dicas..

Esse código é utilizado via web,
para atualizar uma lista de diretórios..

Já coloquei as tag's de no-cache, no html...
Fora essa, não conheço outra forma de limpar o cache do browser..

Eu chamo este código via código Javascript, com http_request...
.........................................................................
    http_request = new XMLHttpRequest();
    ...
    var Envio = gpathCGI+'?sta='+NPath+'&pta='+Proj;
     ...
.........................................................................
O script roda bem a questão é na segunda chamada.,
ele fica em cache em algum lugar e não se atualiza...

Será que tem a ver com alguma configuração no apache ou no perl...?
Usei o xampp para instalar o apache e perl...

Qualquer luz é super bem vinda.

obrigado.

Claudio H.Binaghi
claudio at dpreferencial.com.br
5511 3288.4840




----- Original Message ----- 
From: "breno" <breno at rio.pm.org>
To: <saopaulo-pm at mail.pm.org>
Sent: Monday, May 04, 2009 8:47 PM
Subject: Re: [SP-pm] Problema com opendir/readdir


Eu vi um print "Content-type: text/html\n\n"; mesmo?

Claudio, acho que o problema não está no script (segue versão
levemente modificada do código do Thomas abaixo), mas sim na forma
como ele está sendo chamado.

--------------------8<--------------------
use strict;
use warnings;
# Utilize isso em todos os seus programas. (otima dica, Thomas++)

my $tp = q(/etc);           # diretorio alvo
my $gProj = q(file.xml);  # arquivo alvo
my $dtudo = '';

opendir (my $dir, $tp)
    or die "Erro: $!\n";

# obtem lista de dirs em que o arquivo $gProj existe
while (my $path = readdir ($dir)) {
    if (-d $path) { # Eh um diretorio
        if (-e qq($tp/$path/$gProj)) { # O arquivo existe.
            $dtudo .= $path . "\n";
        }
    }
}
closedir ($dir);

print "Content-type: text/html\n\n";
print $dtudo;
--------------------8<--------------------

Experimentou rodar pela linha de comando? O problema persiste?
Caso esteja rodando pela web, experimentou limpar o cache do seu navegador?

Ah, e se me permite uma dica, procure usar nomes significativos para
suas variáveis. Você vai me agradecer daqui a 6 meses, qdo quiser
modificar "só uma coisinha" nesse código ;-)


[]s

-b

2009/5/4  <claudio at dpreferencial.com.br>:
> Thomas,
>
> Agradeço muito as suas dicas,
> testei o seu código e ele funciona perfeito.. mas...
>
> ainda continuo com o mesmo problema.
>
> 1º - rodo e dá OK
> 2º - crio uma pasta no path para onde aponto o opendir
> 3º - rodo e dá ERRADO .. retorna o mesmo conteúdo da primeira rodada.
>
> ainda dá retorno com o conteúdo antigo do Diretório..
> não atualiza a informação, nem aparece as novas pastas, nem as deletadas
> saem...
>
> Qualquer luz agradeço.
>
> Claudio H.Binaghi
> claudio at dpreferencial.com.br
> 5511 3288.4840
>
>
>
>
>
>
> ----- Original Message ----- From: "Thomas Britis" <thomas at tcnet.com.br>
> To: <saopaulo-pm at mail.pm.org>
> Sent: Monday, May 04, 2009 7:28 PM
> Subject: Re: [SP-pm] Problema com opendir/readdir
>
>
> 1- para testar se é um diretório, utilize -d ao invés de -z.
> 2- .= concatena ao invés de vc usar $dtudo = $dtudo . $dPasta.
>
> Sem o uso de módulos, eu faria algo assim:
>
> use strict;
> use warnings;
> # Utilize isso em todos os seus programas.
>
> my $tp = q(/etc);
> my $gProj = q(file.xml);
> my $dtudo;
>
> opendir (my $dir, $tp) or die ("Erro: $!");
> while (my $path = readdir ($dir)) {
> if (-d $path) { # Eh um diretorio
> if (-e qq($tp/$path/$gProj)) { # O arquivo existe.
> $dtudo .= $path, "\n";
> }
> }
>
> closedir ($dir);
>
> print $dtudo;
>
> Não testei, mas acho que é isso.
>
> claudio at dpreferencial.com.br wrote:
>>
>> Perl..soall, boa noite!
>>
>> Sou iniciante em perl.
>>
>> Estou com dificuldade em usa os comandos
>> opendir/ readdir
>>
>> Fiz um código bem simples:
>>
>> opendir(Dir,$tp) or die("Dir não existe: $!");
>> while($dPasta=readdir(Dir)){
>> my $Dor = $tp . $dPasta;
>> if(-z $Dor){ # testa se é um sub-diretório
>> my $dirtem = $Dor . "/" . $gProj . ".xml";
>> if(-e $dirtem ){
>> $dtudo = $dtudo . $dPasta . "\n";
>> }
>> }
>> }
>> closedir(Dir);
>> print "Content-type: text/html\n\n";
>> print $dtudo;
>>
>> 1º - rodo e dá OK
>> 2º - crio uma pasta no path para onde aponto o opendir
>> 3º - rodo e dá ERRADO .. retorna o mesmo conteúdo da primeira rodada.
>>
>> Parece que o resulado fica na memória.
>>
>> Se alguém puder me dar uma luz,
>>
>> desde já agradeço a todos.
>>
>>
>> Claudio H.Binaghi
>> claudio at dpreferencial.com.br
>> 5511 3288.4840
>>
>> _______________________________________________
>> SaoPaulo-pm mailing list
>> SaoPaulo-pm at pm.org
>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>
>>
>
> --
> Thomas Storino Britis
> TCNet Informatica e Telecomunicacoes LTDA
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm at pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
>
>
> --
> No virus found in this incoming message.
> Checked by AVG.
> Version: 7.5.557 / Virus Database: 270.12.11/2089 - Release Date: 
> 30/4/2009
> 17:53
>
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm at pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
_______________________________________________
SaoPaulo-pm mailing list
SaoPaulo-pm at pm.org
http://mail.pm.org/mailman/listinfo/saopaulo-pm



-- 
No virus found in this incoming message.
Checked by AVG.
Version: 7.5.557 / Virus Database: 270.12.11/2089 - Release Date: 30/4/2009 
17:53



More information about the SaoPaulo-pm mailing list