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 :

Tableau - remplacement


Sujet :

Langage Perl

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 161
    Points : 78
    Points
    78
    Par défaut Tableau - remplacement
    Bonjour,

    J'ai un tableau qui contient :

    #FLG 000
    #VER 12
    #DEV EUR
    #MPCT
    @Matricule
    @Nom@Prenom
    @TypeTiers

    & une table de hash qui contient :

    @Matricule -> 0256389
    @NomPrenom -> toto
    @TypeTiers -> 0

    Ma question est simple comment remplacer les valeurs du premier tableau par les valeurs du second. Bref faire ceci :

    #FLG 000
    #VER 12
    #DEV EUR
    #MPCT
    0256389
    toto
    0

    Merci & bonne journée

    Flxu__

  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,

    Il faut que tu donnes plus de précisions, je ne suis pas sûr de comprendre... En plus, tu utilises des @, et je ne sais pas si ça représente des tableaux ou quoi...

    Que sont @matricule @NomPrenomet et @TypeTiers ? Des scalaires (chaîne de caractères) ou des tableaux ?
    Si ce sont des scalaires, ils sont donc des clés de ta table de hachage, j'ai bien compris ? Autre question, comment repérer les élements qui doivent être remplacés dans ta liste ?
    Normalement, ce que tu demandes devrait pouvoir être fait avec la fonction map, mais il me faut plus de précision pour te donner un code précis.
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 161
    Points : 78
    Points
    78
    Par défaut
    Non en fait les @ sont juste des motifs pour ma recherche, je vais les changer. C'est vrai que c'est pas terrible avec... Donc je reprend :

    @array1 = ('#FLG 000','#VER 12','#DEV EUR','#MPCT','__Matricule','__Nom@Prenom','__TypeTiers');

    & une table de hash qui contient :

    %hash = (
    '__Matricule' => 0256389
    '__NomPrenom' => 'toto'
    '__TypeTiers' => 0

    )

    Ma question est simple comment remplacer les valeurs du premier tableau par les valeurs du second. Et obtenir un troisième :

    @array3 = ('#FLG 000','#VER 12','#DEV EUR','#MPCT','0256389','toto','0');

    Merci & bonne journée

    Flxu__

  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
    Bon, dans ce cas, voilà un code qui devrait te satisfaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my @array3 = map {$_ =~ m/__/ ? $_ = $hash{$_} : $_ } @array1;
    Je précise que j'ai un peu modifié tes array pour le test, __Nom@Prenom est devenu __NomPrenom (car ton, hash ne contient pas de champ__Nom@Prenom)
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 161
    Points : 78
    Points
    78
    Par défaut
    Merci pour ta réponse, mais je n'arrive pas à le faire fonctionner

    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
    @array1 = ('#FLG 000','#VER 12','#DEV EUR','#MPCT','__Matricule','__Nom@Prenom','__TypeTiers');
     
    open(FILE,$fichier) || die("Erreur d'ouverture de $fichier") ;
    $i=1;
    while (<FILE>) {
            @tab = split(/;/,$_);
            foreach(@tab) {
                    $newTab{$tabCorrespondance{champ.$i}} = $_;
                    $i++;
            }
     
            while (($key, $value) = each %newTab) {
                    print $key." = ".$value."\n";
            }
            my @array3 = map {$_ =~ m/__/ ? $_ = $newTab{$_} : $_ } @array1;
            foreach(@array3) {
                    print $_."\n";
            }
    exit();
    }
    dans le tableau de hash newTab j'ai les valeurs suivantes :

    __NomPrenom = GIBERT PATRICIA
    __compte = 0000005793L
    __codeBanque = 30002
    __Ville = SAINT SAUVEUR SUR ECOLE
    __Matricule = 5013179
    __guichet = 06952
    __CodePostal = 77930
    __ComptePrincipal = 41100000
    __TypeTiers = 0
    __Ad1 = 25 RES DE MONTGERMONT
    __CleRib = 58

    __Banque = CL
    __Ad2 =


    & en résultat j'ai :

    #FLG 000
    #VER 12
    #DEV EUR
    #MPCT
    5013179

    0


    une idée ??

  6. #6
    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
    Et bien, déjà je te montre mon code qui marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    my @array1 = ('#FLG 000','#VER 12','#DEV EUR','#MPCT','__Matricule','__NomPrenom','__TypeTiers');
    my %hash = ('__Matricule' => '0256389' ,
    			'__NomPrenom' => 'toto',
    			'__TypeTiers' => 0);
    my @array3 = map {$_ =~ m/__/ ? $_ = $hash{$_} : $_ } @array1;
    print "$_\n" for (@array3);
    Je pense que tu n'actives pas les warnings dans ton code, sinon Perl te ferait sûrement des commentaires désagrébles au niveau du map.

    Déjà, tu n'as pas modifié dans ton array1 Nom@Prenom. Il n'y a pas de champ Nom@Prenom dans ta table de hachage, donc première erreur. Ta seconde erreur est, je pense, de laisser une valeur numérique simple en tant que valeur dans ta table de hachage. Si tu pouvais la mettre entre guillement, ça serait pas mal. Moi perl m'a ennuyé là dessus.
    Tu as essayé de faire un Dumper (module Data:umper) de ton hash juste avant l'appel à map ? J'aimerais bien que tu me montres le résultat, ça me permettra de mieux comprendre pourquoi le code ne marche pas
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 161
    Points : 78
    Points
    78
    Par défaut Résolu
    Je te remercie, ca fonctionne.

    EN fait ma liste je la construisais avec un fichier & la ce ne marchait pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    open(GABA, $gabarit) || die("Erreur d'ouverture de $gabarit");
    @array1 = <GABA>;
    close(GABA);
    J'ai décider de tous mettre directement dans la variable.

    Encore Merci.

    Bonne journée.

    Flux__

  8. #8
    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
    Pas de problème

    N'oublie pas le tag résolu !
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 11/07/2006, 20h52
  2. Remplacement des espaces dans les valeur d'un tableau
    Par calimero642 dans le forum Langage
    Réponses: 10
    Dernier message: 12/05/2006, 18h56
  3. [CSS] Remplacer un tableau par des div et css
    Par irenee dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 03/05/2006, 16h04
  4. remplacer du texte dans un tableau généré
    Par jcaruana dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/02/2006, 16h36
  5. [Tableaux] Remplacer les Frame par un tableau?
    Par Malau dans le forum Langage
    Réponses: 3
    Dernier message: 14/01/2006, 16h43

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