OVH Cloud OVH Cloud

Obtenir une liste de répertoire

2 réponses
Avatar
Xavier MOGHRABI
Hello,

Je suis en train d'écrire un script Perl et j'ai besoin d'obtenir la liste
des répertoire dans un répertoire. J'ai réalisé quelques tests mais ces
derniers ont été des échecs.

En fait, j'ai besoin de cette liste pour ouvrir un fichier dans le dernier
répertoire créer. Les noms de mes répertoires sont de la forme :

rep.2004-09-20
rep.2004-09-21
...

Chaque jour je crée un répertoire qui contient un fichier resultat.txt
obtenu par une tâche cron.
Pour le moment j'ai écrit le script suivant qui ne fonctionne pas car ma
variable $retvak n'obtient pas la list des répertoires :

$retval = system "ls -C $ENV{RESULT_DIR}";
@rep = split("\t",$retval);

Toute aide serait la bienvenue.

Merci d'avance

--
Xavier MOGHRABI - Consortium ObjecWeb
Email : xavier.moghrabi at inrialpes.fr
Phone : +33 4 76 61 55 25

2 réponses

Avatar
Paul Gaborit
À (at) Thu, 23 Sep 2004 11:01:15 +0200,
Xavier MOGHRABI écrivait (wrote):
Je suis en train d'écrire un script Perl et j'ai besoin d'obtenir la liste
des répertoire dans un répertoire. J'ai réalisé quelques tests mais ces
derniers ont été des échecs.
[...]

Pour le moment j'ai écrit le script suivant qui ne fonctionne pas car ma
variable $retvak n'obtient pas la list des répertoires :

$retval = system "ls -C $ENV{RESULT_DIR}";
@rep = split("t",$retval);


La commande 'system' ne renvoie pas la sortie standard de la commande exécutée
mais juste le 'status' de fin d'exécution de la commande telle qu'il est
retournée par l'appel système 'wait'. Pour récupérer la sortie standard, il
faut utiliser les apostrophes inverses :

$retval = `ls -C $ENV{RESULT_DIR}`;

De plus, dans la mesure du possible, on évite d'appeler des commandes
externes. Il vaut mieux passer par les commandes internes de perl qui seront
toujours plus rapides :

opendir my $dir, $ENV{RESULT_DIR}
or die "Can't read dir $ENV{RESULT_DIR}: $!n";
@rep = readdir $dir;
closedir $dir;

print "@repn";

--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>

Avatar
Paul Gaborit
À (at) Thu, 23 Sep 2004 11:01:15 +0200,
Xavier MOGHRABI écrivait (wrote):
Je suis en train d'écrire un script Perl et j'ai besoin d'obtenir la liste
des répertoire dans un répertoire. J'ai réalisé quelques tests mais ces
derniers ont été des échecs.


Par ailleurs, on est un certain nombre ici à lire aussi les groupes
anglophones concernant Perl. Il est de bon ton de prévenir lorsqu'on pose la
même question dans plusieurs groupes afin d'éviter de perdre du temps à
répondre à une question qui a peut-être déjà trouvée réponse ailleurs...

--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>