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 :

Ecrire dans un fichier .txt


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Ecrire dans un fichier .txt
    Bonjour,

    Premièrement, je voudrais écrire dans un fichier, mais je ne connais rien de perl.

    mon fichier est normalisé comme cela:
    05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl
    05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl
    05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl

    je souhaite pouvoir ajouter en début de chaque ligne une date au format 00/00/0000 puis un carcatere "espace" et un "=" pour séparer. L'idéal serait d'avoir une fenetre d'affichage qui demande "veuillez saisir la date a rajouter au fichier :" et ensuite ajouter cette date au début de chaque ligne.

    les lignes du fichier doient devenir comme cela par exemple
    02/03/2007 = 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl

    On m'a fourni le code suivant
    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
    print "Veuillez saisir la date à rajouter au fichier (format jj/mm/aaaa, ex : 12/03/2007) : ";
     
    chomp(my $date = <STDIN>);
     
     
    open F_ECRIRE,">>resultat.txt" or die "E/S : $!\n";
     
    chomp(my @fic = glob("*.txt"));
     
    foreach my $e(@fic){
      open F_LIRE,"$e" or warn "E/S : $!\n";
      while(<F_LIRE>){
        print F_ECRIRE "$date = $_";
      }
    }
    __END__
    Ensuite, j'aimerais, toujours en perl, concatener plusieurs fichers. C'est a dire, j'ai plusieurs fichiers .txt de date différentes (auxquels j'ai pu ajouter la date auparavant) et je voudrais n'en avoir plus qu'un seul qui contient l'ensemble du contenu des autres fichiers.

    pour concatener mes fichiers, j'ai déja essayé
    cat statXiti_061206.txt statXiti_061207.txt statXiti_061208.txt statXiti_061209.txt statXiti_061210.txt > stat_Xiti
    mais ça ne va pas.


    En ésperant avoir été clair ... pour avoir une réponse claire et rapide
    Merci par avance

  2. #2
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Bonjour,

    Pour concaténer deux fichiers, c'est plutôt facile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    open (my($fic1) ,"<fic1.txt" );
    open (my($fic2),"<fic2.txt" );
    open (my($ficmod), ">ficmod.txt");
    print $ficmod $_ while (<$fic1>); 
    print $ficmod $_ while (<$fic2>);
    Voilà, si tu ne comprend pas le code dit le nous

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    effectivement, je ne comprends pas le code. mais c'est pas grave


    je ne comprends pas surtout parce que le fichier resultat.txt est bien crée lors de l'execution du script mais il est vide...

    je pense que c'est une question de repertoire dans lequel se trouve les fichiers TXT à traiter et le script en perl ?

    Comment puis je faire pour etre dans le bon dossier ? Comment spécifier l'adresse du dossier contenant mes fichiers ?

    NB : je travaille sous win

  4. #4
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Bonjour,

    Je devais être fatigué quand j'ai écrit ce code... Bon il marche (normalement), mais il est pas type top. Essaie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    open (my($fic1) ,"<fic1.txt" ) or die "Erreur dans l'ouverture du premier fichier : $!";
    open (my($fic2),"<fic2.txt" ) or die "Erreur dans l'ouverture du second fichier : $!";
    open (my($ficmod), ">ficmod.txt") or die "Erreur dans la creation du fichier de resultat: $!";
    print $ficmod $_ while (<$fic1>); 
    print $ficmod "\n";
    print $ficmod $_ while (<$fic2>);
    Et au fait, il est tout à fait normal que le fichier soit créé, pen le crée de base si il n'existe pas

Discussions similaires

  1. Ecrire dans un fichier txt
    Par El-Diablo- dans le forum C++Builder
    Réponses: 28
    Dernier message: 04/09/2007, 16h17
  2. comment ecrire dans un fichier txt avec WriteFile?
    Par Art19 dans le forum Langage
    Réponses: 13
    Dernier message: 04/07/2007, 15h50
  3. Ecrire dans un fichier txt en 4gl
    Par patriceguic dans le forum Informix
    Réponses: 2
    Dernier message: 07/05/2007, 20h44
  4. Ecrire dans un fichier .txt
    Par yinyann86 dans le forum Pascal
    Réponses: 17
    Dernier message: 24/11/2006, 13h36
  5. Ecrire dans un fichier txt sans en effacer le contenu
    Par cari dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 14/12/2005, 18h11

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