Bonjour,
Je cherche à faire un script qui parcourt une arborescence de fichier et qui m'affiche le nom de la dernière "feuille" trouvée que ce soit un fichier ou un répertoire. Du coup je le fais de manière récursive mais j'ai un souci...
voici mon code :
Au premier passage, dans @tElt j'ai bien mes 4 répertoires et donc la fonction se rappelle avec le premier répertoire qui ne contient qu'un fichier, donc il arrive sur le test du fichier et il me dit "fichier final".
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
21
22
23
24
25
26
27
28
29
30
31
32 sub rglob{ $sNomRep = $_[0] ; $sFlag = $_[1] ; if($sFlag eq 1) { print "rep final : $sNomRep \n"; } else { @tElt = glob($sNomRep."/*"); foreach $sElt (@tElt) { # on test si on est sur un rep if(-d $sElt) { # on rappel le glob &rglob( $sElt, 0); } # on test si on est sur un fichier if(-f $sElt) { print "fichier final : $sElt \n"; } } unless(@tElt) { # on rappel le glob en disant final &rglob( $sNomRep, 1); } } }
Du coup il revient là où il était arrivé dans l'appel précédent, sauf que ma variable @tElt ne contient plus les 4 répertoires comme avant !!!
Merci de votre aide.
Partager