[Perl] reproduire une arborescence !!

reproduire une arborescence !! [Perl] - Perl - Programmation

Marsh Posté le 21-10-2002 à 18:54:17    

:hello:
Je cherche à reproduire une arborescence  :sweat: !!
une idée  :??: un modul  :??: une fonction toute faite  :D  
je prend tout  :lol:  
 
En Perl pour l'instant, en Perl/TK plus tard


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 21-10-2002 à 18:54:17   

Reply

Marsh Posté le 22-10-2002 à 08:33:32    

stef_dobermann a écrit a écrit :

:hello:
Je cherche à reproduire une arborescence  :sweat: !!
une idée  :??: un modul  :??: une fonction toute faite  :D  
je prend tout  :lol:  
 
En Perl pour l'instant, en Perl/TK plus tard




 
En gros, tu as une arborescence contenant des répertoires, des fichiers, etc. Dans tes réps, tu peux trouver d'autres rép, des fichiers, etc.
 
Moi, j'ai 2 idées pour toi :
 
1) si tu es sous NT, il me semble qu'il y a une commande Dos puissante qui peux te copier un répertoire + ses répertoires fils et tous les fichiers qui vont avec.
 
2) tu te crées une fonction récursive à utiliser pour chaque répertoire : pour chaque rép trouvé, tu utilises cette fonction.
 
Mais bon, je reconnais que c'est chaud, ton truc !  :(


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
Reply

Marsh Posté le 22-10-2002 à 10:35:07    

merci mes pour ca j'utilise la fonction FIND qui ce trouve sur un modul elle me sort deja tous les fichiers et leurs emplacement :D  
 
mon soucis est comment de stocké ces informations et surtout pouvoir les reformer !!, pour l'instant j'ai une table MySQL
 
qui contient :
- un identifiant,
- le nom du fichier,
- son enmplacement,
- sa taille
 
je voulais savoir q'il y avait une autre methode plus facile car la je bosse par rapport à l'emplacement du fichier et c pas evident  ;)


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 22-10-2002 à 10:37:44    

Ah ! Ben dans ce cas, ça devrait être plus fastoche pour toi.
 
1ère étape : tu récupères la liste des répertoires à créer et tu fais du mkdir à tout va.
 
2ème étape : via le module File:Copy, tu copies tes fichiers du rép source vers le rép destination.


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
Reply

Marsh Posté le 22-10-2002 à 11:06:41    

c juste pour les afficher ensuite,
mais c bon je crois avoir une solution
utiliser les hash, verifier si la clef existe (la clef etant lenom du rep) si elle exsit lui donner c valeur + les nouvelles
sinon la créer
 
mais pour lire ensuite chuis obligé d'utiliser des boucleet des split
 
mais bon je fait avec pour l'instant


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 22-10-2002 à 11:08:52    

Si j'ai bien compris la structure de ta table dans MySql, tu as un champ pour l'emplacement du fichier et un champ pour le fichier lui-même ?
 
Personnellement, je procéderais comme suit :
 
1) faire une extraction des 2 champs concernés (voir + haut)
2) isoler les données des répertoires, les charger tous dans un hash et faire ensuite :

Code :
  1. foreach my $Rep(%Rep) {
  2.     if (! -d $Rep) {
  3.         mkdir($Rep);
  4.     }
  5. }


3)via le module

Code :
  1. use File::Copy;

, faire la copie de tous tes fichiers :

Code :
  1. copy("$AncienRep\\$Fichier", "$NewRep\\$Fichier" );


 
Avec bien entendu une 'tite gestion d'erreurs pour la création des répertoires comme celle des fichiers.


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
Reply

Marsh Posté le 22-10-2002 à 16:38:23    

ya pas de mkdir, c pas pour créer des répertoires mais pour faire une gestion de compilation, la question que je me pose tous le temps est : Mais ou j'ai mis ce Put1 de fichier de M :gun: ? je c que je l'ai mais sur quel CD ?
 
voila  :p  
 


---------------
Tout à commencé par un rêve...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed