salut,
J'aurai aimé savoir si il etait possible de creer des arborescence de fichier en perl ?
Merci
Version imprimable
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 ?
une chose dans ce genre
Citation:
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:
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; }
Bonjour,
Il y a aussi la fonction mkdir qui peut te servir pour créer des répertoires ;)
Bonjour,
:koi:Citation:
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.
en faite pour creer une arborescence il existe ce module :je l'ai utiliser et j'ai fait celaCode: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:
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:
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)
arffffffffff
j'avais pas vu
merci
et si je souhaite creer cettre arborescence
en faite celaCode:
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 ??Citation:
mkdir home
mkdir home/dev1
mkdir home/dev1/test
mkdir home/dev2
mkdir home/dev2/file1
mkdir home/dev2/file2
comme cela :
merciCode:
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:
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']);
et donc si je le fait à ma maniere synthaxiquement c'est correct ?
Si ca compile et que ca fonctionne, oui ;)
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