Bonjour,
je suis complement perdu dans l utilisation de cette fonction...
En fait, je cherche à faire la liste des sous repertoires (1er niveau)
sur du repertoire actuel, et le mettre dans un tableau
Or File::Find::dir, me donne toute l'arborescence a partir du répertoire
de recheche. (C est normal, c est ce que fait ce module par defaut).
find sub ( push @tab , "$File::Find::dir"), <$repertoire actuel>; =>
conne toute l'aborescence.
Dans la doc activestate, il est bien stipulé qu'il faut utiliser
\&wanted et filedepth , ou même positionner la variable no_chdir quelque
part pour limiter la recherche à 1 seul niveau d'arborescence...
Malheureusement, j y comprends rien. (dans la syntaxe à adopter)
Quelqu'un pourrait me donner un coupe de main ?
voila ce que j ai trouvé dans la doc :
SYNOPSIS
use File::Find;
find(\&wanted, @directories_to_search);
sub wanted { ... }
use File::Find;
finddepth(\&wanted, @directories_to_search);
sub wanted { ... }
use File::Find;
find({ wanted => \&process, follow => 1 }, '.');
...
You are chdir()'d to $File::Find::dir when the function is called,
unless no_chdir was specified. Note that when changing to directories is
in effect the root directory (/) is a somewhat special case inasmuch as
the concatenation of $File::Find::dir, '/' and $_ is not literally equal
to $File::Find::name. The table below summarizes all variants:
À (at) Fri, 12 Oct 2007 13:33:59 +0200, Paul Gaborit écrivait (wrote):
À (at) Fri, 12 Oct 2007 13:13:59 +0200, Olivier Mougin écrivait (wrote):
En fait, je cherche à faire la liste des sous repertoires (1er niveau) sur du repertoire actuel, et le mettre dans un tableau
my $dir_path = "."; opendir my $dh, $dir_path or die "Can't read '$dir_path' : $!n"; my @sub_dir = grep {-d "$dir_path/$_"} readdir $dh; close $dh; ~~~~~
À (at) Fri, 12 Oct 2007 13:33:59 +0200,
Paul Gaborit <Paul.Gaborit@invalid.invalid> écrivait (wrote):
À (at) Fri, 12 Oct 2007 13:13:59 +0200,
Olivier Mougin <oliviermougin@free.fr> écrivait (wrote):
En fait, je cherche à faire la liste des sous repertoires (1er niveau)
sur du repertoire actuel, et le mettre dans un tableau
my $dir_path = ".";
opendir my $dh, $dir_path
or die "Can't read '$dir_path' : $!n";
my @sub_dir = grep {-d "$dir_path/$_"} readdir $dh;
close $dh;
~~~~~
closedir $dh;
Ça devrait suffire...
... avec le petit correctif qui va bien !
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) Fri, 12 Oct 2007 13:33:59 +0200, Paul Gaborit écrivait (wrote):
À (at) Fri, 12 Oct 2007 13:13:59 +0200, Olivier Mougin écrivait (wrote):
En fait, je cherche à faire la liste des sous repertoires (1er niveau) sur du repertoire actuel, et le mettre dans un tableau
my $dir_path = "."; opendir my $dh, $dir_path or die "Can't read '$dir_path' : $!n"; my @sub_dir = grep {-d "$dir_path/$_"} readdir $dh; close $dh; ~~~~~