j'ai un tableau a deux dimensions. chaque �l�ment est un hash que je
remplis comme �a :
my @tableau;
...
my $record={};
$record->{valeur}=' ';
$record->{liste}=[1,2,3,4,5,6,7,8,9];
$record->{card}=9;
$tableau[$ligne][$colonne]=$record;
mais je ne sais pas comment acc�der � la xi�me valeur du tableau dans la
cl� {liste} :(
$tableau[..][..]{liste}[x] bien s�r ne fonctionne pas.
tout comme, pour avoir la taille, le #???$tableau[..][..]{liste}???
merci pour votre aide
--
klp
"bug : probleme d'interface entre la chaise et le clavier"
bon, pour acc�der � la valeur, j'ai trouv� :
@{$tableau[$ll][$cc]{liste}}[x]
par contre, pour la taille, je s�che toujours...
> my $record={};
> $record->{valeur}=' ';
> $record->{liste}=[1,2,3,4,5,6,7,8,9];
> $record->{card}=9;
> $tableau[$ligne][$colonne]=$record;
>
Donc lᅵ, $tableau[$ligne][$colonne] est une rᅵfᅵrence ᅵ un hash, et $record
est une rᅵfᅵrence au mᅵme hash. Donc si ultᅵrieurement tu modifies
$record->{liste} tu modifieras aussi $tableau[$ligne][$colonne]{liste} :
est-ce ce que tu veux ?
Tu voulais sans doute plutᅵt ᅵcrire :
$tableau[$ligne][$colonne]={%$record};
qui fait pointer $tableau[$ligne][$colonne] vers un hash anonyme qui est une
copie de celui vers lequel pointe $record au moment de l'assignation.
> mais je ne sais pas comment accᅵder ᅵ la xiᅵme valeur du tableau dans la
> clᅵ {liste} :(
> $tableau[..][..]{liste}[x] bien sᅵr ne fonctionne pas.
>
Il faudrait prᅵciser ᅵ ne fonctionne pas ᅵ et surtout dans quelles
circonstances. En tout cas, chez moi ᅵa marcheᅵᅵ.
> tout comme, pour avoir la taille, le #???$tableau[..][..]{liste}???
>
$#{$tableau[0][0]{liste}}
Manuel.
Non ! Aucune des deux formulations ne peut fonctionner avec 'x', c'est
s�r. Il vaut donc mieux toujours montrer du *vrai* code ! Ainsi que
les �ventuels messages d'erreur associ�s (avec les bons num�ros de
lignes) : �a aide !
Le code ci-dessous fonctionne tr�s bien :
##########################
#!/usr/bin/perl -w
use strict;
use warnings;
my @tableau;
my $record = {};
$record->{liste} = [1..9];
$tableau[1][2] = $record;
print "4e elements: ", $tableau[1][2]{liste}[3], "\n";
print "Nb elements: ", scalar @{$tableau[1][2]{liste}}, "\n";
##########################
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en fran�ais - <http://perl.enstimac.fr/>
> print "Nb elements: ", scalar @{$tableau[1][2]{liste}}, "\n";
Une derni�re chose : la notation $# ne donne pas la taille mais
l'indice du dernier �l�ment. On peut aussi l'applique ici par :
print "Dernier element: ", scalar $#{$tableau[1][2]{liste}}, "\n";
mea culpu :(