IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Remplacer une ligne dans une fichier


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Remplacer une ligne dans une fichier
    j'ai un fichier formaté comme ceci :

    superfact OK
    machin2 NOK
    machin3 OK

    et je voudrais par exemple changer la ligne de machin2 avec l'état OK ! Donc je parcours le fichier, quand je détecte le mot machin2, je veux remplacer la ligne en cours, mais je ne peux pas : car je suis en mode lecture. Et inversement si je suis en mode ecriture je ne peux pas parcourir le tableau.

    En bref comment remplacer la ligne numero X d'un fichier par un texte ?

    Voila mon petit bout de début de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    open(METAFILE,"$meta_niceday_file")||die ("ERROR : The file meta_niceday doesn't exist");
     
       #we read $meta_niceday_file to find the SUPERFACT LINE and then we change its status
       while (<METAFILE>)
        {
        my @result = split(/\s+/,$_);
     
        if ($result[0] eq "superfact")
           {
           print METAFILE "superfact    ca marche";
           }
        }
    close (METAFILE);


    MERCI !!

  2. #2
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    je suis passé par un hash finalement, alors c'est assez lourd mais ca marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    open(METAFILE,"$meta_niceday_file")||die ("ERROR : The file meta_niceday doesn't exist");
       #we read $meta_niceday_file to find the SUPERFACT LINE and then we change its status
       my %meta_file;
       while (my $data=<METAFILE>)
        {
        my @result = split(/\s+/,$data);
     
        my $testcommentaire=$result[0];
        $testcommentaire=substr($testcommentaire,0,1);
        if ($testcommentaire ne "#")
    	{
    	$meta_file{$result[0]}=$result[1];
    	if ($result[0] eq "superfact")
    	   {
    	   $meta_file{"superfact"}="ca marche pas";
    	   }
     
            }
     
        }
    close (METAFILE);
     
    system ("rm $meta_niceday_file");
     
    open (METAFILE,">$meta_niceday_file")||die ("ERROR : The file meta_niceday can't be created");
    print METAFILE "#SOFT            LAST DATE\n";   
        foreach my $line (keys %meta_file)
         {
         print METAFILE "$line        $meta_file{$line}\n";
         }
    close (METAFILE);
    Voila

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  2. [Batch] Remplacer une ligne par une autre dans un fichier txt
    Par tinwul dans le forum Scripts/Batch
    Réponses: 9
    Dernier message: 03/07/2009, 13h58
  3. Réponses: 1
    Dernier message: 22/06/2009, 15h19
  4. Ecraser une ligne par une autre dans un fichier binaire
    Par lity7 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 27/04/2008, 11h47
  5. Réponses: 9
    Dernier message: 22/05/2006, 12h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo