[SP-pm] Problema com opendir/readdir

Thomas Britis thomas at tcnet.com.br
Mon May 4 15:28:50 PDT 2009


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


More information about the SaoPaulo-pm mailing list