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

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Paul Gaborit
Le #151807
À (at) Fri, 12 Oct 2007 13:13:59 +0200,
Olivier Mougin
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 - Perl en français -
Paul Gaborit
Le #151806
À (at) Fri, 12 Oct 2007 13:33:59 +0200,
Paul Gaborit
À (at) Fri, 12 Oct 2007 13:13:59 +0200,
Olivier Mougin
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 - Perl en français -

Olivier Mougin
Le #151805
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
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...




Publicité
Poster une réponse
Anonyme