[Cascavel-pm] Dúvida iniciante listar subdiretórios
Eden Cardim
edencardim em gmail.com
Sexta Setembro 12 06:48:41 PDT 2008
2008/9/12 gilmar <gilmarmoretto.mp em gmail.com>:
> 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.
Muito bem, você acertou no projeto, porém tem um detalhe: uma função
recursiva precisa, necessariamente, de argumentos para ser útil. Sua
função precisa receber um argumento indicando qual diretório você quer
listar, dessa listagem você pega os diretórios e invoca a função
novamente, passando cada um dos diretórios por vez, algo assim:
sub listar_diretorio {
my $dir = shift;
for my $arq (glob("$dir/*")) {
# ...
listar_diretorio($arq) if -d $arq;
}
}
listar_diretorio($inicial);
no CPAN tem vários módulos que fazem isso (File::Next, Path::Class),
sugiro a leitura dos fontes, será bastante instrutivo.
--
edenc.vox.com
Mais detalhes sobre a lista de discussão Cascavel-pm