Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

File::Find::dir ... Je suis perdu ...

3 réponses
Avatar
Olivier Mougin
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:

$File::Find::name $File::Find::dir $_
default / / .
no_chdir=>0 /etc / etc
/etc/x /etc x

no_chdir=>1 / / /
/etc / /etc
/etc/x /etc /etc/x

Merc par avance de votre aide

3 réponses

Avatar
Paul Gaborit
À (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;


Ça devrait suffire...

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/&gt;
Perl en français - <http://perl.enstimac.fr/&gt;

Avatar
Paul Gaborit
À (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;
~~~~~


closedir $dh;


Ça devrait suffire...


... avec le petit correctif qui va bien !

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/&gt;
Perl en français - <http://perl.enstimac.fr/&gt;


Avatar
Olivier Mougin
damned, ! mais c bien sur ! quand on est obnubilé par un truc !
Désolé du dérangement..
Merci Monsieur !


À (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;


Ça devrait suffire...