[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