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}???
bon, pour accéder à la valeur, j'ai trouvé : @{$tableau[$ll][$cc]{liste}}[x]
par contre, pour la taille, je sèche toujours...
-- klp "bug : probleme d'interface entre la chaise et le clavier"
mpg
Le (on) jeudi 02 octobre 2008 14:16, kurtz_le_pirate a écrit (wrote) :
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.
tout comme, pour avoir la taille, le #???$tableau[..][..]{liste}???
$#{$tableau[0][0]{liste}}
Manuel.
Le (on) jeudi 02 octobre 2008 14:16, kurtz_le_pirate a écrit (wrote) :
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.
Le (on) jeudi 02 octobre 2008 14:16, kurtz_le_pirate a écrit (wrote) :
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.
tout comme, pour avoir la taille, le #???$tableau[..][..]{liste}???
$#{$tableau[0][0]{liste}}
Manuel.
Paul Gaborit
À (at) Thu, 2 Oct 2008 14:52:34 +0200, "kurtz_le_pirate" écrivait (wrote):
kurtz_le_pirate wrote:
bonjour,
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}???
bon, pour accéder à la valeur, j'ai trouvé : @{$tableau[$ll][$cc]{liste}}[x]
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;
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Thu, 2 Oct 2008 14:52:34 +0200,
"kurtz_le_pirate" <kurtzlepirate@yahoo.fr> écrivait (wrote):
kurtz_le_pirate wrote:
bonjour,
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}???
bon, pour accéder à la valeur, j'ai trouvé :
@{$tableau[$ll][$cc]{liste}}[x]
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;
À (at) Thu, 2 Oct 2008 14:52:34 +0200, "kurtz_le_pirate" écrivait (wrote):
kurtz_le_pirate wrote:
bonjour,
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}???
bon, pour accéder à la valeur, j'ai trouvé : @{$tableau[$ll][$cc]{liste}}[x]
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;
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
kurtz_le_pirate
Paul Gaborit wrote:
À (at) Thu, 2 Oct 2008 14:52:34 +0200, .. .. 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 !
mea culpu :(
-- klp "bug : probleme d'interface entre la chaise et le clavier"
Paul Gaborit wrote:
À (at) Thu, 2 Oct 2008 14:52:34 +0200,
..
..
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 !
mea culpu :(
--
klp
"bug : probleme d'interface entre la chaise et le clavier"
À (at) Thu, 2 Oct 2008 14:52:34 +0200, .. .. 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 !
mea culpu :(
-- klp "bug : probleme d'interface entre la chaise et le clavier"