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);
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/>
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/>
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/>
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/>
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/>
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/>