lecture et écriture dans un fichier

lecture et écriture dans un fichier - Perl - Programmation

Marsh Posté le 17-08-2016 à 15:33:18    

Bonjour à tous :)
 
j'ai essayé d'ouvrire un fichier en mode lecture et écriture en utilisant ce code :

Code :
  1. open (FIC,  "+<:utf8",  $f ) or die "erreur d'ouverture!!!.";


 
le problème est que le résultat est un fichier vide , en fait mon but est de lire le fichier puis modifier qqes lignes et afficher le résultat dans le mme fichier..
 
si quelqu'un pourra m'aider, je serai très reconnaissante ..

Reply

Marsh Posté le 17-08-2016 à 15:33:18   

Reply

Marsh Posté le 25-08-2016 à 19:15:25    

Il y a quoi dans $f? En principe ça fonctionne...
 
fichier_test.txt:

Code :
  1. ligne1
  2. ligne2
  3. ligne3
Code :
  1. use strict;
  2. use warnings FATAL=>'all';
  3. use autodie;
  4.  
  5. my $f="fichier_test.txt";
  6. open (FIC, '+<:utf8', $f); #je préfère mettre des guillemets simples car il n'y a pas besoin (au contraire) d'interpréter des \n etc
  7. print while(<FIC> );
  8. close(FIC);


 

Citation :

en fait mon but est de lire le fichier puis modifier qqes lignes et afficher le résultat dans le mme fichier..


Sois prudent(e). Je ne connais pas la bonne méthode pour modifier une ligne précise sans toucher au reste du fichier. L'approche naive

Code :
  1. use strict;
  2. use warnings FATAL=>'all';
  3. use autodie;
  4.  
  5. my $f="fichier_test.txt";
  6. open (FIC, '+<:utf8', $f);
  7. print while(<FIC> );
  8. seek(FIC, 0, 0); #aller au début du fichier
  9. print FIC "ligne à insérer\n";
  10. close(FIC);

ne s'intéresse pas aux lignes, ça va remplacer les deux premières lignes et une partie de la troisième, ce n'est pas ce qu'on veux.
Je suppose qu'il y a un module tout fait pour ça, sinon (si le fichier n'est pas trop grand) on peut le mettre dans un tableau ligne par ligne, modifier comme on veut et tout réécrire.

Code :
  1. use strict;
  2. use warnings FATAL=>'all';
  3. use autodie;
  4.  
  5. my $f="fichier_test.txt";
  6. my @lignes;
  7. open (FIC, '+<:utf8', $f);
  8. push @lignes, $_ while(<FIC> );
  9. $lignes[1]="ligne à insérer\n";
  10. seek(FIC, 0, 0); #aller au début du fichier
  11. print FIC join('', @lignes);
  12. close(FIC);

Reply

Sujets relatifs:

Leave a Replay

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