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 :

Lecture des données contenu dans un tableau Postgres (array)


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 : 37
    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 Lecture des données contenu dans un tableau Postgres (array)
    Bonjour à tous,

    J'ai une requête dans un script Perl qui permet de rapatrier les données contenues dans
    un tableau Postgres.

    J'ai utilisé la même méthode pour lire les données que quand j'interroge une colonne sans tableau soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    use DBI;
    use DBD::Pg ':async';
    ...
    while ( @Tableau_resultat_requete = $sth->fetchrow_array ) {
    	$Ligne = join(";", @Tableau_resultat_requete); 
    	print "$Ligne\n";
    }
    Mais quand je lis les lignes, il me donne comme résultat array(0x2aab...).

    Comment fait-on pour aller a la maille du dessous et lire les données du tableau pour les remettre en forme?

    Merci

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    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 986
    Par défaut
    array(0x2aab...) t'indique non pas un tableau mais une référence vers un tableau. Pour accéder à ce tableau ou à son contenu, il faut déréférencer. Pour ce faire, plusieurs outils sont à ta disposition. Prenons un exemple:
    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
    #!/usr/bin/perl
    use strict;
    use warnings;
     
    my $personnage = 'Zibouinbouin';
    my $refperso = \$personnage;
     
    my @chanteur = ('Carlos', 'Annie Cordy', 'Douchka');
    my @arr = ( 'Toto',
                \$personnage,
                \@chanteur,
                ['Jean Lefevre', 'Henry Guibet', 'Jacques Ballutin']
    ); # les items 1, 2 et 3 sont des références
     
    print "$personnage\n";
     
    print "$refperso\n";
     
    # Pour accéder au scalaire je déréférence avec le sigil $
    print "$$refperso\n\n";
     
     
    print "$arr[0]\n"; # l'item 0 est un scalaire, on obtient donc: "Toto"
     
    print "$arr[1]\n"; # l'item 1 est une référence vers un scalaire: SCALAR(0x557c2...)
     
    # Pour obtenir le scalaire lui-même, je déréférence avec le sigil $ et pour 
    # éviter les ambigüités j'utilise des accolades (car la précédence est telle
    # que $$arr[1] est lue comme ${$arr}[1])
    print "${$arr[1]}\n";
     
    print "$arr[2]\n"; # l'item 2 est une référence vers un tableau: ARRAY(0x55d9...)
     
    # si je veux le tableau, j'utilise le sigil @ pour déréférencer (toujours avec les accolades)
    print join(";", @{$arr[2]}), "\n";
     
    # si je veux maintenant accéder à un item du tableau en référence, je peux:
    # 1. faire comme précédemment en déréférençant d'abord le tableau
    print "${$arr[2]}[1]\n";
    # 2. soit utiliser l'arrow operator (opérateur flêche)
    print "$arr[2]->[1]\n";
     
    # l'item 3 est aussi une référence vers un tableau, sauf qu'elle est créée
    # sans passer par une variable
    print "${$arr[3]}[2]\n",
          "$arr[3]->[2]\n";
    https://www.perltutorial.org/perl-reference/

    https://perl.developpez.com/tutoriel...e=page_4#LIV-J

  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 : 37
    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
    Explication très claire, comprise et mise en place dans mon script avec succès.

    Merci pour la pédagogie de ton exemple

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/03/2015, 12h00
  2. Manipulation des valeurs contenues dans un tableau
    Par khasanouray dans le forum Langage
    Réponses: 3
    Dernier message: 29/05/2007, 20h36
  3. [TP] Afficher des chaînes contenues dans un tableau
    Par mah00 dans le forum Turbo Pascal
    Réponses: 8
    Dernier message: 20/05/2007, 09h15
  4. [JList] Lecture des données sauvegardées dans un fichier
    Par Myogtha dans le forum Composants
    Réponses: 7
    Dernier message: 10/06/2004, 21h05
  5. Réponses: 2
    Dernier message: 20/02/2004, 08h47

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