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 :

[perl] map map map


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Par défaut [perl] map map map
    Bonjour à tous,
    Voilà j'ai déjà posé une question sur la fonction map, j'ai relu les réponses, j'ai aussi lu la faq sur la fonction map mais je ne parviens toujours pas à faire ce que je veux:

    Je voudrais simplement mettre un fichier dont cque ligne contient des champs séparés par ';' dan un tableau à deux dimensions !!

    j'ai tenté cette qolution là mais en vain:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $file='./compte.csv';
    open(fic,$file) or die "pb ouvertur $file $! \n";
    @tab=<fic>;
    close(fic);
    @All=map({@tmp=split(/;/,$_);}@tab);

    Sans avoir la solution, car pour le coups j'aimerais y arriver par moi même, pouvez vous me donner une explication un coups de pouce ou une information qui me permettrait de comprendre mon erreur et surtout de mieux comprendre map !!

    Meric pour vos réponses.

  2. #2
    Yux
    Yux est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 105
    Par défaut
    Tableau à deux dimensions ? Pourquoi ne pas utiliser un hash ? :o

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 46
    Par défaut
    Bonjour

    Je ne vois pas l'intêret du tableau temporaire @tmp !!!

    De plus, c'est une erreur de frappe pour le forum, car il manque un espace entre le bloc {} et @tab dans ta fonction map

    Sinon map fonctionne de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    map expression (ou bloc) liste
    pour chaque élément de liste, il évalue expression (ou bloc), et renvoi la valeur de l'expression (ou du bloc).
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    @tab = ("un;deux","trois;quatre;cinq","six");
    @all = map {split /;/,$_} @tab;
    @all contient (un,deux,trois,quatre,cinq,six).

    A+
    Rv

  4. #4
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut Re: [perl] map map map
    Citation Envoyé par Yux
    Tableau à deux dimensions ? Pourquoi ne pas utiliser un hash ? :o
    Parce que !

    C'est son choix, on peut l'aider à l'assumer, non ?


    Citation Envoyé par LE NEINDRE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $file='./compte.csv';
    open(fic,$file) or die "pb ouvertur $file $! \n";
    @tab=<fic>;
    close(fic);
    @All=map({@tmp=split(/;/,$_);}@tab);

    Sans avoir la solution, car pour le coups j'aimerais y arriver par moi même, pouvez vous me donner une explication un coups de pouce ou une information qui me permettrait de comprendre mon erreur et surtout de mieux comprendre map !!
    Le fonctionnement de map est extrêmement rudimentaire, finalement :

    map parcours le tableau (la liste) fournie en second paramètre et lui applique le bloc de code fourni en premier paramètre.

    Pour chaque élément, le bloc le reçoit dans $_.

    La valeur renvoyée par le bloc est alors récupérée par map pour constituer la liste de sortie.


    Maintenant, pour ce que tu veux construire ... un tableau à deux dimensions, c'est, en fait, une liste uni-dimensionnelle contenant des références à des listes uni-dimensionnelles.

    Pour retourner une référence à la liste uni-dimensionnelle retournée par split, il suffit d'entourer cet appel par des crochets [ et ]. Il n'y a donc pas vraiment besoin d'en récupérer le contenu dans un tableau temporaire.

    Tu n'est donc pas loin du tout du but

    Bonne continuation.

  5. #5
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Oui, Strach te donne presque la solution, reste à rajouter un petit élément que 2Eurocents évoque. N'oublie pas de chainer un petit chomp() pour te débarasser des retours à la ligne.

    --
    Jedaï

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Par défaut
    Bonjour à tous,

    Merci beaucoup, j'ai bien compris.
    Ca fonctionne maintenant avec le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @All=map {[split(/;/,$_)];}@tab;
    Perl, c'est géniaaalll !!!!!

    Merci encore, et très bonne journée à vous tous !

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

Discussions similaires

  1. Mapping de map un peu complexe
    Par hpavavar dans le forum Hibernate
    Réponses: 13
    Dernier message: 11/08/2008, 11h32
  2. [STL] Parcours de maps de maps de char*
    Par FenX. dans le forum SL & STL
    Réponses: 19
    Dernier message: 17/07/2007, 09h50
  3. Réponses: 8
    Dernier message: 09/02/2007, 15h31
  4. Réponses: 4
    Dernier message: 02/03/2006, 20h40
  5. [PERL] Problème avec map
    Par LE NEINDRE dans le forum Langage
    Réponses: 9
    Dernier message: 05/10/2005, 09h48

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