Salut à tous.
Bon en gros mon problème est simple : je liste le contenu d'un répertoire (répertoire de ficheirs .log d'un client IRC) avec le code suivant :
Code :
- #!/usr/bin/perl -w
- use strict;
- my $chemin = "c:/program files/mirc/logs/";
- my $compte=0;
- my $file;
- my @file;
- my @infos;
- opendir(REP,$chemin) or die "Ce repertoire ne semble pas exister.";
- while($file=readdir(REP))
- {
- push (@file,$file);
- }
- closedir(REP);
- foreach (@file)
- {
- if ($_) {
- $compte++;
- @infos=stat($chemin.$_);
- print $_.", et ce fichier fait ".$infos[7]." octets.\r\n"; }
- }
- print $compte." fichiers dans le repertoire.\r\n";
|
Le truc magique, c'est que dans ma boucle foreach, si je mets if(-f $_), j'aurai 0 fichiers. Si je laisse comme ça, j'aurai toute la liste de mes fichiers.
Et ce qui est étrange, c'est que si je prends un dossier avec des fichiers .txt à l'intérieur, le if(-f) marchera convenablement.
Alors un fichier .log n'est pas un fichier ? Ou bien j'ai fait une erreur grossière ? Que se passe-t-il ?
(les rn sont des \r\n)