[Cascavel-pm] Dúvida iniciante listar subdiretórios

gilmar gilmarmoretto.mp em gmail.com
Sexta Setembro 12 06:13:24 PDT 2008


    Um bom dia a todos.
    Estou começando a aperender perl aos poucos e a mais ou menos, um 
mes e por isso o meu problema pode ser até banal mas empaquei nele e não 
consigo sair.
    Somente para treinar, comecei a fazer um script que possa listar 
todos os diretórios e subdiretórios o qual consegui com uma certa 
facilidade. Mas comecei a ver que seria um pouquinho mais complicado 
quando tivesse que listar muitos níveis de subdiretórios, então 
pesquisando eu ví que a solução poderia ser uma função que chamasse a sí 
mesma , listasse os subdirtórios e entrasse dentro de cada um a procura 
de outros subdiretórios até achar todos.
    O problema é que eu não consigo fazer isso e faz alguns dias que não 
consigo nenhum avanço. Por isso estou colocando-o para que pudessem dar 
uma olhada e me dar uma luz no que estou fazendo de errado.

#!/usr/bin/perl
#our $nivel=1;
#our $subnivel=1;
$diretorioraiz="./";
opendir(diretorioraiz,"$diretorioraiz");
  @diretorioraiz=readdir(diretorioraiz);
closedir(diretorioraiz);
# print "@diretorioraiz\q";
foreach my $controle( @diretorioraiz ) {
  if ( $controle eq "." ){next}
  if ( $controle eq ".." ){next}
  if ( -d $controle ) {
    print "Diretório $controle\n\n";
    sub entradiretorio
    {
      opendir(diretorio,$controle);
        @diretorio=readdir(diretorio);
#        $subnivel++;
      closedir(diretorio);
      print "@diretorio\n";
      foreach my $controle( @diretorio ) {
        if ( $controle eq "." ){next}
        if ( $controle eq ".." ){next}
        if ( -d controle ) {
          &entrasubdiretorio();
        }
      }
#      $subnivel--;
    }
  }


}


OBS: Eu fiz questão de colocar até as linhas com códigos comentados para 
que vejam que realmente estava testando possibilidades, e o print " 
Diretório $controle\n\n" foi só para testar que o script até aquele 
ponto estava funcionando corretamente.


Alguém poderia me dar uma luz?


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