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 ?
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; }
Bonjour,
Il y a aussi la fonction mkdir qui peut te servir pour créer des répertoires![]()
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.
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)
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']);
Partager