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 :

m'aidé! lire fichier+comparaison+envoi courriel


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2
    Points : 3
    Points
    3
    Par défaut m'aidé! lire fichier+comparaison+envoi courriel
    Bonjour je veux traiter un fichier .txt, sur chaque ligne les élements sont séparés par un ";" ex: var1;var2;var3 ...

    0752883-621;arsenead;16/2/2006
    0752931-621;arsenead;15/3/2006
    0752962-224;arsenead;14/3/2006
    0752986-483;zclarkh;29/3/2006
    0752993-483;zionj;20/4/2006
    0753002-483;zionj;19/4/2006
    0753019-483;zclarkh;29/3/2006
    0753026-483;zclarkh;28/3/2006
    0753167-483;zmouradr;29/3/2006
    0753174-483;zmouradr;29/3/2006
    etc..

    le probleme, c que je veux récupérer toute les lignes du meme user et les envoyer comme courriel au user avec contenu toute les données par rapport a lui. la problematique c que un meme user peut se retrouver sur plusieurs lignes avec var1 et var3 different. si je fais une boucle, je vais envoyer plusieurs mail au meme user puisque PERL lit ligne par ligne

    comment faire ? pour envoyer toute l'info d'un user dans un courriel

    au secours...

  2. #2
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Bonjour,

    Pourquoi ne pas concaténer dans une variable les lignes correspondantes à un utilisateur ("user") particulier ?
    Comme ça, à la fin de la lecture du fichier, tu auras toutes les données pour ton utilisateur dans une variable.

    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

  3. #3
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    Si tu veux envoyer un mail à chaque user en lui envoyant toutes les lignes qui lui correspondent, tu peux utiliser une hash à 3 niveaux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    my %hash = ();
     
    while (<INPUT>)
    {
        my ($var1, $var2, $var3) = split(/;/, $_);
        $hash{$var2}{$var1}{$var3} = 1;
    }
    puis, ensuite pour envoyer les mails

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    foreach my $username (keys %hash)
    {
        print("debut mail pour user $username\n");
        foreach my $var2 (keys %{ $hash{$username} })
        {
            foreach my $date (keys %{ $hash{$username}{$var2} })
            {
                print(" * $var2 ; $date\n");
            }
        }
        print("fin mail pour user $username\n");
    }

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  4. #4
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    Il est d'usage sur ce forum que la personne qui demande de l'aide mette d'abord le travail qu'elle a fait... On n'est pas ici pour filer du code comme ca, mais pour aider à comprendre pourquoi un bout de code ne marche pas, etc....
    Donc la prochaine fois, prière de réfléchir à du code au lieu de demander à d'autres de le faire...

    @+
    Mr6

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2
    Points : 3
    Points
    3
    Par défaut D'accord avec toi Mr7,
    ;-) dsl mr7 j'aurai du y pensé, voici mon bout de code que j'ai commencé,

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    #!C:\Perl\bin\perl.exe
    chdir("c:/");
    open(FICHIER,"<test.txt");
    my @lignes = <FICHIER>;
    close(FICHIER);
    my $gr = @lignes;
    #print(@lignes[0] ."\n");
    $a=0;
     
     
    foreach(@lignes){
     
    @mots  = split(/;/,$lignes[$a]);
    @new= $mots[1].";".$mots[0].";".$mots[2];
     
     
     
     $a++;
    }
    @file = sort(@new);
    for(@file){
    print ($_."\n");
     
    }
    ##pour extraire le workorder si..
    #$signes[$i] = substr($phrase,$i,1);
     
     
     
    #####################################
     sub tri
    {
    my ($a,$b)=@_;
    if (($a =~m/\d/) && ($b =~m/\D/)) {return -1;}
    if (($a =~m/\D/) && ($b =~m/\d/)) {return 1;}
    if (($a =~m/\d/) && ($b =~m/\d/)) {return ($a <=> $b);}
    if (($a =~m/\D/) && ($b =~m/\D/)) {return ($a cmp $b);}
    }
     
    #@file=sort({tri($a,$b)} @lignes);
    ####################decoupage########
    ---------
    mais ca marche pas...

    je vais essayer ce que Marneus me propose. super sympa Marneus, je vous reviens

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

Discussions similaires

  1. [Débutant] aide: lire un fichier binary file (structure connue)
    Par forzacodm dans le forum VB.NET
    Réponses: 0
    Dernier message: 01/04/2013, 20h26
  2. Réponses: 0
    Dernier message: 08/02/2012, 17h52
  3. [VB]Aide lire fichier
    Par netfoot dans le forum VB.NET
    Réponses: 3
    Dernier message: 13/03/2011, 15h04
  4. aide creer et lire fichier config dans home/utilisateur
    Par themulot dans le forum Administration système
    Réponses: 2
    Dernier message: 28/12/2007, 12h36
  5. Aide sur fichier batch
    Par Flushovsky dans le forum Windows
    Réponses: 13
    Dernier message: 14/12/2007, 08h21

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