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 :

Bonnes pratiques Perl : déclaration de tableaux dynamiques


Sujet :

Langage Perl

  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 105
    Par défaut Bonnes pratiques Perl : déclaration de tableaux dynamiques
    Bonjour a Tous,

    Comme marqué dans le titre, j'aimerais savoir comment on peut déclarer des tableaux de manière
    dynamique dans les bonnes pratiques Perl.

    Le besoin de départ est le fait de créer x tableaux en fonction de x éléments.

    Ces x tableaux vont permettent de ramener des informations sur ces x éléments dans un fichier xlsx avec le module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Excel::Writer::XLSX
    J'ai lu dans les forums, l'utilisation de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    no strict 'vars';
    @{"Tableau_synthese_$Application"};
    ${"Tableau_resultat_$Application"};
    qui ne semble pas conseillée (et je commence a le comprendre car les déférences tableau, si je comprend, bien ne marche plus)

    Comment peut-on déclarer des tableaux dynamique de la manière la plus propre possible? sans mettre en péril l'utilisation
    des commandes qui suivent?
    A moins qu'on puisse utilisé une autre technique en Perl.

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 978
    Par défaut
    Je ne vois vraiment pas l'intérêt d'avoir des noms de variables "dynamique"s, pourquoi ne pas utiliser un hash tout simplement?

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 105
    Par défaut
    Merci pour ta réponse.

    Je ne suis contre aucune solution .

    Je ne connais tout simplement pas assez bien le hash.

    Je re-explique du coup mon besoin pour être sur que je suis bien clair sur celui-ci pour ne pas t'embarquer sur une fausse piste.

    Je récupère par requête des éléments z liés à des éléments x qui sont fonction d'un autre élément y.

    $y1 = [x1 => z2, x2 => z2, x3 => z1]
    $y2 = [x5 => z2, x6 => z4 ,x7 => z2]

    je définis différents indicateurs :
    Nombre de fois que je compte z2 pour l'éléments y1.
    Tableau Brut des associations x/z pour l'élément y1.
    ...

    Du coup, je compte par variable dynamique de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ${"Tableau_resultat_$y1"};
    Pour les traiter distinctement et pouvoir les valoriser dans des tableaux séparés
    (via référence pour peupler directement des Worksheets via le module Excel::Writer::XLSX), j'appelle des tableaux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @{"Tableau_resultat_$y1"};
    qui sont "déposables" par référence.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $Worksheet->write_row( $Ligne, $Colonne, \@{"Tableau_resultat_$y1"} )

  4. #4
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 978
    Par défaut
    Un hash (ou table de hachage) c'est simplement une structure de données qui à une clef associe une valeur (qui peut être n'importe quoi), en gros c'est l'équivalent du dictionnaire en Python (si ça te parle plus). À noter que c'est une structure de données dans laquelle il n'y a pas d'ordre: quelque soit la manière dont tu la peuples, rien ne te garantit que les éléments apparaîtront dans un ordre ou dans un autre contrairement au tableau.

    Tu trouveras facilement des tutoriels au sujet des hash sur le site ou ailleurs. Ensuite pour créer des structures plus complexes, il suffit d'utiliser les références:
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    # trois manières de définir un hash
    my %hash1;
    $hash1{'animal'} = 'lapin';
    $hash1{'végétal'} = 'chêne';
     
    my %hash2 = ( 'animal' => 'lapin',
                  'végétal' => 'chêne' );
     
    my %hash3 = ( 'animal', 'lapin', 'végétal', 'chêne' );
     
    print $hash3{'animal'}, " ", # lapin
          $hash3{'végétal'}, "\n\n"; # chêne
     
     
    # clefs et valeurs d'un hash (pas d'ordre)
    print join(' ', keys(%hash3)), "\n";
    print join(' ', values(%hash3)), "\n\n";
     
     
    # pour créer des structures complexes on utilise les références.
    # 1. hash de listes
    my @animal = ('lapin', 'renard', 'fouine');
     
    my %hash4 = ( 'animal' => \@animal,
                  'végétal' => ['chêne', 'fougère', 'herbe'] );
     
    print $hash4{'animal'}, "\n";
    print join(' ', @{ $hash4{'animal'} }), "\n",
          join(' ', @{ $hash4{'végétal'} }), "\n",
          $hash4{'animal'}[2], ' ', $hash4{'végétal'}[1], "\n\n";
     
    # 2. hash de hashes
    my %animal = ( 'carnivore' => 'lion',
                   'herbivore' => 'vache' );
     
    my %hash5 = ( 'animal' => {%animal},
                  'plante' => { 'vivace' => 'crocus', 
                                'annuelle' => 'pensée' } );
     
    print $hash5{'animal'}, "\n";
    print $hash5{'animal'}{'herbivore'}, ' ',
          $hash5{'plante'}{'vivace'}, "\n\n";
     
    # 3. liste de listes
    my @couleur = ('rouge', 'bleu', 'vert', 'jaune');
    my @saveur = ('salé', 'sucré', 'amère', 'gluant');
     
    my @liste1 = ( [@couleur], [@saveur] );
     
    print $liste1[1], "\n";
    print $liste1[0][1], ' ', $liste1[1][3], "\n\n";
     
    # 4. liste de hashes
    my @liste2 = ( {'chat' => 'miaou', 'chien' => 'ouaf'},
                   {'adieu', 'veau', 'vache', 'cochon'} );
     
    print $liste2[0], "\n";
    print $liste2[0]{'chien'}, ' ', $liste2[1]{'vache'}, "\n\n";
    Bien sûr tu peux combiner ça dans tous les sens et imbriquer à l'infinie. Reste à déterminer la structure la mieux appropriée pour ce que tu veux faire.

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 105
    Par défaut
    Désolé pour le retard de réponse, j'étais sur un autre script en attendant de reprendre
    celui-ci.

    Tu m'as donné plein de possibilité pour la structuration des données et les exemples avec, merci beaucoup.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/08/2015, 14h00
  2. Quelles bonnes pratiques pour un formulaire dynamique ?
    Par Nothus dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/07/2015, 13h02
  3. [Débutant] Déclaration de variables : Bonnes pratiques, interrogation
    Par r.morel dans le forum VB.NET
    Réponses: 7
    Dernier message: 06/07/2015, 22h03
  4. Trigger / appel procedure / sql dynamique / bonnes pratiques
    Par Samish dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 25/03/2011, 21h56
  5. Réponses: 7
    Dernier message: 23/03/2009, 22h38

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