problème ouverture de fichier

problème ouverture de fichier - Perl - Programmation

Marsh Posté le 13-07-2004 à 17:17:46    

bonjour,  
voila j'ai fait un petit script pour ouvrir un fichier et quand je fais un script pour voir ce qu'il y a dans mon fichier , je n'ai rien qui s'affiche alors que mon fichier existe.j'ai cette erreure qui s'affiche:
readline()on closed filehandle FIC at test.pl on line 7
que veut dire cette erreur est ce que mon fichier n'existe pas?en tout cas rien ne s'affiche, est ce normale?
voici le petit script.merci de votre aide
 
#!c:/perl/bin/perl -w
use win32::process;
use Proc::WaitStat;
use IPC::Open2;
 
open(FIC,"adresse.txt" );
@contenu=<FIC>;
 
foreach (@contenu){
chop;
print  $_;
 
}

Reply

Marsh Posté le 13-07-2004 à 17:17:46   

Reply

Marsh Posté le 14-07-2004 à 00:07:17    


Code :
  1. use strict;
  2. my $file = "adresse.txt";
  3. open(FIC, $file) or die "Can't open $file: $!";
  4. my @lines = <FIC>;
  5. close(FIC);
  6. foreach my $line (@lines) {
  7.   $line =~ s/\r\n//g; # retire les retours de ligne
  8.   print $line;
  9. }


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 15-07-2004 à 09:43:47    

ça ne marche pas, il ne m'affiche pas ce que j'ai dans adresse.txt, il m'affiche "can't open adresse.txt No such file or directory" or que le fichier existe, comment faire?

Reply

Marsh Posté le 15-07-2004 à 10:15:38    

j'ai essayé de mettre le chemin complet de mon fichier devant my @lines donc j'ai my $file = "c:/Program Files/VideoLAN/VLC/adresse.txt";  
Mais ça ne marche toujours pas?est ce que c'est parcque je travaille sous windows(activeperl 5.6)?existe il une autre fonction pour ouvrir les fichiers specifique à windows?

Reply

Marsh Posté le 15-07-2004 à 10:20:06    

Il faut spécifier que tu veux ouvrir ton fichier en lecture ">"
 

Code :
  1. use strict;
  2.  
  3. my $file = "adresse.txt";
  4. mu $lignes;
  5.  
  6. open(FIC, "<$file" ) or die "Can't open $file: $!";
  7.  
  8. while (my $ligne = <FIC> ){
  9.       print "$line\n";
  10. }


 
OU
 

Code :
  1. use strict;
  2.  
  3. my $file = "adresse.txt";
  4. mu @lignes;
  5.  
  6. open(FIC, "<$file" ) or die "Can't open $file: $!";
  7. @lignes = <FIC>;
  8. print "@lignes";
  9. print "$line\n";

Reply

Marsh Posté le 15-07-2004 à 10:30:19    

merci, j'ai essayé la première méthode j'ai le message d'erreur suivant:
Global symbol "$lignes" requires explicite package name at test.pl line 11
Global symbol "$line" requires explicite package name at test.pl line 16

Reply

Marsh Posté le 15-07-2004 à 10:36:02    

j'en reviens toujours au même problème, c'est à dire le même message d'erreur:"can't open adresse.txt No such file or directory" alors que ce fichier existe???

Reply

Marsh Posté le 15-07-2004 à 10:37:37    

Pour la première méthode, c'est normal, j'ai tapé "mu $lignes" au lieu de "my $lignes" à la ligne 4

Reply

Marsh Posté le 15-07-2004 à 10:39:36    

oui j'avais remarqué et je l'ai rectifie

Reply

Marsh Posté le 15-07-2004 à 10:39:48    

Essaye en passant directement le nom de ficher dans la fonction:
 
open(FIC, "<adresse.txt" ) || die "Probleme $!";

Reply

Marsh Posté le 15-07-2004 à 10:39:48   

Reply

Marsh Posté le 15-07-2004 à 10:40:47    

et c'est toujours le même pb il me dit qu'il ne peut pas ouvrir le fichier adresse.txt car il n'existe pas?

Reply

Marsh Posté le 15-07-2004 à 10:41:02    

ok

Reply

Marsh Posté le 15-07-2004 à 10:44:17    

et bien non il ne veut toujours pas m'afficher le contenu, j'ai toujours le même message d'erreur?

Reply

Marsh Posté le 15-07-2004 à 10:52:34    

Le fichier est-il bien dans le même répertoire que ton script?


Message édité par Charlux le 15-07-2004 à 10:53:17
Reply

Marsh Posté le 15-07-2004 à 10:58:13    

oui

Reply

Marsh Posté le 15-07-2004 à 11:00:02    

même qd j'esseye de mettre le chemin en entier ça ne marche pas?je sais pas si c'est parceque je travaille sous windows (activeperl 5.6)?

Reply

Marsh Posté le 15-07-2004 à 11:06:21    

Là, je ne peux plus d'aider. Moi, sous ma machine (RedHat) la première solution que je t'ai proposée (avec correction sur les fautes de frappes) marche.
Je ne sais pas si ça peux venir d'ActivePerl.
Désolée

Reply

Marsh Posté le 15-07-2004 à 11:21:14    

merci quand même

Reply

Marsh Posté le 15-07-2004 à 12:22:02    

Charlux a écrit :

Il faut spécifier que tu veux ouvrir ton fichier en lecture ">"
 

Code :
  1. use strict;
  2.  
  3. my $file = "adresse.txt";
  4. mu $lignes;
  5.  
  6. open(FIC, "<$file" ) or die "Can't open $file: $!";
  7.  
  8. while (my $ligne = <FIC> ){
  9.       print "$line\n";
  10. }


 
OU
 

Code :
  1. use strict;
  2.  
  3. my $file = "adresse.txt";
  4. mu @lignes;
  5.  
  6. open(FIC, "<$file" ) or die "Can't open $file: $!";
  7. @lignes = <FIC>;
  8. print "@lignes";
  9. print "$line\n";



 
non   :o


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 15-07-2004 à 12:22:41    

ladym a écrit :

ça ne marche pas, il ne m'affiche pas ce que j'ai dans adresse.txt, il m'affiche "can't open adresse.txt No such file or directory" or que le fichier existe, comment faire?


 
 
tu reprends mon code, et tu relis le message d'erreur
 
No such file or directory -> le fichier est surement pas présent
 
mets deja le path complet  :sarcastic:


Message édité par burgergold le 15-07-2004 à 12:23:14

---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 15-07-2004 à 14:47:03    

j'ai même essayé avec le path complet et ça ne l'ouvre tjs pas .je n'y comprends rien?

Reply

Marsh Posté le 15-07-2004 à 15:22:19    

je me suis dis que ça ne marchait peut être pas parce que je mettais le tout dans programme, j'ai donc deplacé mes fichiers à la racine et en indiquant le chemin complet. et j'ai toujours le même message d'erreur?
 
use strict;  
     
  my $file = "c:/adresse.txt";  
  my $lignes;  
     
  open(FIC, "<$file" ) or die "Can't open $file: $!";  
     
  while (my $ligne = <FIC> ){  
          print "$ligne\n";  
  }

Reply

Marsh Posté le 15-07-2004 à 17:48:16    

je le répète...
 

Code :
  1. use strict;
  2. my $file = 'C:\adresse.txt';
  3. open(FIC, $file) or die "Can't open $file: $!";
  4. my @lines = <FIC>;
  5. close(FIC);
  6. foreach my $line (@lines) {
  7.   print $line;
  8. }


Message édité par burgergold le 16-07-2004 à 00:24:22
Reply

Marsh Posté le 22-07-2004 à 09:47:48    

ok merci

Reply

Marsh Posté le 22-07-2004 à 11:48:14    

je vous conseil de toujorus utiliser la version à trois argument de open (à moins que vous vouliez que votre code tourne sous perl 5.005):
 
open(FIC, '<', $file) or die;
 
c'est plus rapide et plus safe (surtout si vous ne savez pas d'ou vient la variable $file, car ou peut facilement y ajouter des '>' ou meme '|' ...)

Reply

Marsh Posté le 22-07-2004 à 12:04:12    

Ok merci ça marche, mais comme je suis habitué à la méthode 2 arguments, je préfère la garder car je me sens plus à l'aise

Reply

Marsh Posté le 22-07-2004 à 12:13:31    

pospos a écrit :

je vous conseil de toujorus utiliser la version à trois argument de open (à moins que vous vouliez que votre code tourne sous perl 5.005):
 
open(FIC, '<', $file) or die;
 
c'est plus rapide et plus safe (surtout si vous ne savez pas d'ou vient la variable $file, car ou peut facilement y ajouter des '>' ou meme '|' ...)


 
:D
 
justement au boulot on a du 5.005 (voir meme 5.004) et du 5.8.3

Reply

Marsh Posté le 22-07-2004 à 12:14:18    

ladym a écrit :

Ok merci ça marche, mais comme je suis habitué à la méthode 2 arguments, je préfère la garder car je me sens plus à l'aise

je te conseil de l'abonadonner, c'est un nid à emmerdes
 
avec trois arguments c'est exactement pareil, mais tu es sur ce ce qui va se passer (et en plus c'est plus rapide à l'exacution)


Message édité par pospos le 22-07-2004 à 12:14:49
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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