Eric C.
2010-06-15 13:38:14 UTC
Bonjour à tous,
J'essaie de lire les informations retournées par l'opérateur -M, à la
fois dans le répertoire d'où est lancé mon script ainsi que dans un
sous-répertoire. J'obtiens cependant un comportement un peu
étrange ...
La version qui me permet d'obtenir exactement ce que je veux est la
suivante :
foreach (<*>) {print ($_,"\t",-M,"\n")};
print "\n";
opendir REP,"temp" or die "echec";
chdir "temp";
while ($fic=readdir(REP)) {
print $fic,"\t",-M($fic),"\n";
}
J'obtiens alors :
C:\TESTS_PERL>perl test.pl
abc.txt 0.0112268518518519
temp 0.00266203703703704
test.pl 2.31481481481481e-005
. 0.00266203703703704
.. 0.0112731481481481
def.txt 0.00269675925925926
Si je retire le chdir, l'opérateur -M ne fonctionne plus sur le
fichier def.txt du sous-répertoire (qui est cependant bien lu), et la
date affectée à .. est celle de la racine (donc du .. du répertoire de
lancement, et non du sous-répertoire) :
C:\TESTS_PERL>perl test.pl
abc.txt 0.0110185185185185
temp 0.0024537037037037
test.pl 1.15740740740741e-005
. 0.0110648148148148
.. 11123.5889930556
def.txt
Et enfin si je garde le chdir mais que je m'abstiens d'affecter une
variable lors du while de lecture du sous-répertoire, avec un code
comme celui-ci :
foreach (<*>) {print ($_,"\t",-M,"\n")};
print "\n";
opendir REP,"temp" or die "echec";
chdir "temp";
while (readdir(REP)) {
print $_,"\t",-M,"\n";
}
L'affichage du nom de fichier et de sa date ne donnent rien :
C:\TESTS_PERL>perl test.pl
abc.txt 0.0273611111111111
temp 0.0187962962962963
test.pl 1.15740740740741e-005
C:\TESTS_PERL>
Mais la position du prompt montre bien qu'une ligne vide est écrite
(je vois bien la tabulation si je redirige sur un fichier)
Si quelqu'un a des explications, je suis preneur ...
Eric
J'essaie de lire les informations retournées par l'opérateur -M, à la
fois dans le répertoire d'où est lancé mon script ainsi que dans un
sous-répertoire. J'obtiens cependant un comportement un peu
étrange ...
La version qui me permet d'obtenir exactement ce que je veux est la
suivante :
foreach (<*>) {print ($_,"\t",-M,"\n")};
print "\n";
opendir REP,"temp" or die "echec";
chdir "temp";
while ($fic=readdir(REP)) {
print $fic,"\t",-M($fic),"\n";
}
J'obtiens alors :
C:\TESTS_PERL>perl test.pl
abc.txt 0.0112268518518519
temp 0.00266203703703704
test.pl 2.31481481481481e-005
. 0.00266203703703704
.. 0.0112731481481481
def.txt 0.00269675925925926
Si je retire le chdir, l'opérateur -M ne fonctionne plus sur le
fichier def.txt du sous-répertoire (qui est cependant bien lu), et la
date affectée à .. est celle de la racine (donc du .. du répertoire de
lancement, et non du sous-répertoire) :
C:\TESTS_PERL>perl test.pl
abc.txt 0.0110185185185185
temp 0.0024537037037037
test.pl 1.15740740740741e-005
. 0.0110648148148148
.. 11123.5889930556
def.txt
Et enfin si je garde le chdir mais que je m'abstiens d'affecter une
variable lors du while de lecture du sous-répertoire, avec un code
comme celui-ci :
foreach (<*>) {print ($_,"\t",-M,"\n")};
print "\n";
opendir REP,"temp" or die "echec";
chdir "temp";
while (readdir(REP)) {
print $_,"\t",-M,"\n";
}
L'affichage du nom de fichier et de sa date ne donnent rien :
C:\TESTS_PERL>perl test.pl
abc.txt 0.0273611111111111
temp 0.0187962962962963
test.pl 1.15740740740741e-005
C:\TESTS_PERL>
Mais la position du prompt montre bien qu'une ligne vide est écrite
(je vois bien la tabulation si je redirige sur un fichier)
Si quelqu'un a des explications, je suis preneur ...
Eric