[SP-pm] Problema com opendir/readdir

breno breno at rio.pm.org
Mon May 4 16:47:46 PDT 2009


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 em 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 em dpreferencial.com.br
> 5511 3288.4840
>
>
>
>
>
>
> ----- Original Message ----- From: "Thomas Britis" <thomas em tcnet.com.br>
> To: <saopaulo-pm em 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 em 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 em dpreferencial.com.br
>> 5511 3288.4840
>>
>> _______________________________________________
>> SaoPaulo-pm mailing list
>> SaoPaulo-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>
>>
>
> --
> Thomas Storino Britis
> TCNet Informatica e Telecomunicacoes LTDA
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em 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 em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>


More information about the SaoPaulo-pm mailing list