Problème de reconnaissance de fichiers

Problème de reconnaissance de fichiers - Perl - Programmation

Marsh Posté le 23-10-2005 à 12:50:14    

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 :
  1. #!/usr/bin/perl -w
  2. use strict;
  3. my $chemin = "c:/program files/mirc/logs/";
  4. my $compte=0;
  5. my $file;
  6. my @file;
  7. my @infos;
  8. opendir(REP,$chemin) or die "Ce repertoire ne semble pas exister.";
  9. while($file=readdir(REP))
  10. {
  11. push (@file,$file);
  12. }
  13. closedir(REP);
  14. foreach (@file)
  15. {
  16. if ($_) {
  17.  $compte++;
  18.  @infos=stat($chemin.$_);
  19.  print $_.", et ce fichier fait ".$infos[7]." octets.\r\n"; }
  20. }
  21. 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)

Reply

Marsh Posté le 23-10-2005 à 12:50:14   

Reply

Marsh Posté le 24-10-2005 à 11:07:37    

il faut que tu test "$chemin/$_" et non $_ directement
 

Reply

Marsh Posté le 24-10-2005 à 13:04:32    

Ok.
Je faisais ça sous windows, et là j'ai testé sous linux, ça a l'air de fonctionner.
 
Merci beaucoup  :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed