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 :

[langage] boucle pour ouvrir fichiers, reconnaitre caracteres


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [langage] boucle pour ouvrir fichiers, reconnaitre caracteres
    Bonjour,

    Je cherche a ecrire un code perl qui va regarder dans un fichier une liste de fichiers.
    ex:
    a.txt
    b.txt
    c.txt
    ...

    Je veux ouvrir un par un a.txt, b.txt...
    Puis je veux regarder si je trouve le mot "start:".
    Si "start:" existe ds le fichier je veux ajouter
    "jmp real_start" sur la ligne suivant "start:"
    Ensuite je veux un log qui me dise quels fichiers ont ete modifies et ceux non modifies.

    Pour l'instant j'en suis au stade ajouter du texte ds un fichier.
    Je fais:
    open(FILE_OPEN, "<a.txt");
    $line = <FILE_OPEN>;
    open(FILE_WRITE, ">>a.txt");
    $add = "jmp real_start\n";
    print FILE_WRITE $add;

    Mais le texte est ajoute a la fin de a.txt et pas apres la premiere ligne. Pourquoi?

    Merci pour votre aide

    El Lucho
    "Le Quebec est une terre d'avenir et Montreal sera bientot New York"
    Luke

  2. #2
    En attente de confirmation mail
    Inscrit en
    Mars 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 67
    Points : 75
    Points
    75
    Par défaut
    salut

    les ajouts ne se font qu'en fin de fichier: tu es donc obligé de lire ton fichier ligne à ligne et de le réécrire au fur et à mesure pour insérer la ligne qui t'intéresse:

    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
     
    my $monfichier = "a.txt";
    OPEN (FILE_OPEN, $monfichier); 
    OPEN (MON_NOUVEAU_FICHIER, ">a_bis.txt")
    ...
    while (<FILE_OPEN>)  {
      my $ligne = $_;
     
      if ($ligne =~ /.*start.*/)  {
         print MON_NOUVEAU_FICHIER "$ligne\njmp real_start\n"; 
      }
      else  {
         print MON_NOUVEAU_FICHIER "$ligne\n"; 
      }
    }
    close (MON_NOUVEAU_FICHIER);
    close (FILE_OPEN);
    pour savoir quels fichiers ont été modifiés ou pas, je créerais un hach en début de script:

    my %fichier_modifiés = ();
    et dans le if ($ligne =~ /.*start.*/) j'ajouterais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $fichier_modifiés{$monfichier} = 1;
    pour savoir ensuite quels sont les fichiers modifiés, tu regardes les clés de ton hach avec keys...

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Super!!
    Ca marche au poil!
    "Le Quebec est une terre d'avenir et Montreal sera bientot New York"
    Luke

Discussions similaires

  1. Boucle pour ouvrir toutes les tables d'un coup
    Par zarbouine dans le forum Composants VCL
    Réponses: 2
    Dernier message: 28/01/2011, 15h28
  2. Réponses: 1
    Dernier message: 04/02/2010, 20h41
  3. [E-03] Boucle pour ouvrir le dernier fichier
    Par neiluj26 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/03/2009, 17h35
  4. Zone liste pour ouvrir fichier excel
    Par majothi dans le forum VBA Access
    Réponses: 5
    Dernier message: 26/10/2008, 14h41
  5. Réponses: 4
    Dernier message: 09/06/2006, 10h08

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