[Perl] lecture/écriture d'un fichier

lecture/écriture d'un fichier [Perl] - Perl - Programmation

Marsh Posté le 07-07-2003 à 11:35:52    

Voilà je voudrais parcourir un fichier en lecture/écriture, pr pouvoir modifier une ligne si besoin est. J'ai fait ça, mais ça marche pas :

Code :
  1. my $is_id;
  2. open(NEXT_TARGET, '+<'.'mon_fichier');
  3. while(<NEXT_TARGET> ) {
  4.     if (/^$param_to/) {
  5.         $is_id = "true";
  6.         print NEXT_TARGET "Quelque chose"."\n";
  7.         last();
  8.     }
  9. }
  10. close(NEXT_TARGET);
  11. if (!$is_id) {
  12.     open(NEXT_TARGET, '>>'.'mon_fichier');
  13.     print NEXT_TARGET "Quelque chose"."\n";
  14.     close(NEXT_TARGET);
  15. }


Mon deuxièmre if marche quand il faut, ce qui prouve qu'il rentre bien dans le premier. Mais malgré tout, il se refuse à écrire ds le fichier pdt qu'il le lit. Comment faut s'y prendre ?

Reply

Marsh Posté le 07-07-2003 à 11:35:52   

Reply

Marsh Posté le 07-07-2003 à 11:53:39    

le mieux selon moi c d'ouvrir le fichier, le balancer dans un array, fermer le fichier, le réouvrir en écriture avec >, parcourir le array et réécrire le fichier


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

Marsh Posté le 07-07-2003 à 11:58:40    

burgergold a écrit :

le mieux selon moi c d'ouvrir le fichier, le balancer dans un array, fermer le fichier, le réouvrir en écriture avec >, parcourir le array et réécrire le fichier


Ouais, je v p-e finir par en arriver là, effectivt :jap:  
Mais ça fait chier de pas être foutu d'utiliser le +< :/

Reply

Marsh Posté le 08-07-2003 à 11:38:41    

pas mieux que Burgergold, je procède comme lui avec des fichiers pas trop gros.
 
pour les gros fichiers :
 
- copie du fichier d'origine par sécurité
- ouverture du fichier sauvegardé en lecture seule
- création d'un second fichier
- pour chaque ligne, je fais les modifs si besoin et quoiqu'il arrive, j'écris la ligne dans le new fichier


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
Reply

Sujets relatifs:

Leave a Replay

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