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

  1. #1
    Membre régulier
    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:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />g ':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é
    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
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Membre régulier
    Explication très claire, comprise et mise en place dans mon script avec succès.

    Merci pour la pédagogie de ton exemple