salut,
J'aurai aimé savoir si il etait possible de creer des arborescence de fichier en perl ?
Merci
salut,
J'aurai aimé savoir si il etait possible de creer des arborescence de fichier en perl ?
Merci
c'est à dire ?
qu'entends-tu par arborescence de fichier ?
Si un ricard vaut un steak, j'ai bien bouffé une vache hier soir !
L'art de poser les bonnes questions dans les forums afin de ne pas passer pour un
une chose dans ce genre
A
--B
--C
----D
----E
F
G
--H
je suis sur qu'il doit y avoir des modules qui font ça mais sinon tu peux t'inspirer d'un truc comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 sub list_dir { local ($path_from) = @_; $path_from =~ s$//$/$g; local (*DIR); opendir( DIR, "$path_from" ) || die "Impossible d'ouvrir le répertoire $path_from\nErreur: $!"; while ( $entry = readdir( DIR ) ) { $type = ( -d "$path_from/$entry" ) ? "dir" : "file"; if ( ($type eq "dir") && ($entry ne "..") && ($entry ne ".") ) { print "- Dossier : $entry\n"; &list_dir("$path_from/$entry"); } if ( ( $type eq "file" ) && ($entry ne "..") ) { print "- Fichier : $entry\n"; } } closedir( DIR ); return; }
Si un ricard vaut un steak, j'ai bien bouffé une vache hier soir !
L'art de poser les bonnes questions dans les forums afin de ne pas passer pour un
Bonjour,
Il y a aussi la fonction mkdir qui peut te servir pour créer des répertoires
"En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
Application :
ainsi qu'à regarder la avant de poser une question.
La rubrique Perl recrute, contactez-moi.
Bonjour,
Envoyé par donny
J'ai deux façons de comprendre ta question ...
Veux-tu créer une arborescence (affichage) des fichiers (déjà existants), ou bien veux-tu créer les fichiers d'une liste de données représentant l'arborescence à créer ?
Dans le premier cas, une fonction d'affichage, récursive, avec des opendir/readdir/closedir et une précision du niveau de profondeur atteint est très facile à mettre en place.
Dans le second cas, il est important de choisir une bonne structure de données pour stocker la liste de fichier/répertoires à créer, et ensuite, c'est très facile à coup de mkdir.
Bon courage.
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
en faite pour creer une arborescence il existe ce module :je l'ai utiliser et j'ai fait cela
Code : Sélectionner tout - Visualiser dans une fenêtre à part File::Path;
le probleme est qu'il me creer 'C/c1/c2' dans le repertoire à partir duquel j'appel mon script mais il creer cela '/D/d1/d2' à la racine dans mon C:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #!/usr/bin/perl use File::Path; mkpath(['/D/d1/d2', 'C/c1/c2'], 1);
???
je en comprend pas
c'est normal c'est ce que tu lui demandes
/D/d1/d2 est un chemin absolu partant de la racinne du disque (avec le /en premier)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 mkpath(['/D/d1/d2', 'C/c1/c2'], 1);
C/c1/c2 est un chmein relatif donc partant de ton répertoire de travail (sans / au début)
Si un ricard vaut un steak, j'ai bien bouffé une vache hier soir !
L'art de poser les bonnes questions dans les forums afin de ne pas passer pour un
arffffffffff
j'avais pas vu
merci
et si je souhaite creer cettre arborescence
en faite cela
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 home dev1 test dev2 file1 file2
je suis obliger d'indiquer le chemin complet à chaque fois et donc faire des repetitions ??mkdir home
mkdir home/dev1
mkdir home/dev1/test
mkdir home/dev2
mkdir home/dev2/file1
mkdir home/dev2/file2
comme cela :
merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #!/usr/bin/perl use File::Path; mkpath(['home/dev1/test', 'home/dev2/file1','home/dev2/file2'], 1);
rien ne t'empêche de te construire une méthode qui définit un chemin de base et des chemins relatifs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #!/usr/bin/perl use File::Path; sub mymkpath { my ($rootdir, $subdirs) = @_; my @absolutedirs = map { $rootdir . '/' . $_ } @$subdirs; mkpath(\@absolutedirs , 1); } mymkpath('/home', ['dev1/test', 'dev2/file1', 'dev2/file2']); # ou alors mymkpath('/home', ['dev1/test']); mymkpath('/home/dev2', [ 'file1', 'file2']);
Je ne répond à aucune question technique par MP.
Si votre problème est réglé, n'oubliez pas Dans tous les cas
et donc si je le fait à ma maniere synthaxiquement c'est correct ?
Si ca compile et que ca fonctionne, oui
Je ne répond à aucune question technique par MP.
Si votre problème est réglé, n'oubliez pas Dans tous les cas
j'ai tester sa fonctionne
comme je ne trouvais pas d'exemple de cours sur le net
je voulais etre sur que sa posai pas de probleme ou qu'il existait pas une option lorsqu'on creer des repertoire qui on le meme chemin
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager