Perl - Tableau associatif et liste - Perl - Programmation
Marsh Posté le 18-12-2018 à 13:47:25
Je crois que tu cherches le concept des références.
Code :
|
Ou si tu veux mettre un tableau contenant un autre tableau (ou précisément une référence vers un autre tableau) dans ta table de hashage:
Code :
|
Les structures de données en Perl c'est un peu complexe quand on débute, je conseille un bon livre. Bon courage.
Marsh Posté le 18-12-2018 à 15:33:12
Bonjour,
> $Hash{MyInfoID_01} = [MyInfoTitle_01, @MyDList, @MyCList];
Il faudrait faire en fait
$Hash{MyInfoID_01} = [MyInfoTitle_01, \@MyDList, \@MyCList];
A+,
Marsh Posté le 18-12-2018 à 15:36:40
gilou a écrit : Bonjour,Il faudrait faire en fait |
Oui mais attention, si on modifie une valeur dans la structure de données on modifie le tableau et l'inverse. (ou je dis une bêtise? )
Marsh Posté le 18-12-2018 à 15:45:11
Bien sur, mais c'est ce qu'il veut, non?
Si tu veux une vraie copie statique, tu fais
$Hash{MyInfoID_01} = [MyInfoTitle_01, [@MyDList], [@MyCList]];
A+,
Marsh Posté le 18-12-2018 à 16:27:10
Le soucis c'est si on fait un truc du genre
faire(...)
tableau=(rien)
tableau=fonction_compliquée(paramètres)
$hash{clé}=\@tableau
fin faire
on aura une mauvaise surprise à la fin, à savoir toutes les entrées qui contiennent les mêmes valeurs. Il faut passer par un tableau anonyme avec une référence dessus (comme tu l'expliques ). Ne me demande pas comment je sais ça.
Marsh Posté le 18-12-2018 à 16:51:46
Mais ça c'est normal, puisque tu n'as qu'une variable, nommée tableau, toujours la même, donc avec toujours la même adresse.
Donc faire $hash{clé}=\@tableau c'est donner la même valeur (l'adresse unique de @tableau) à toutes les clés.
alors que quand on fait $hash{clé}=[...] on crée automatiquement un nouveau tableau à chaque fois (d'ou l'intérêt de l'anonymat).
A+,
Marsh Posté le 18-12-2018 à 17:26:38
Bien sûr, mais pour un débutant c'est un piège potentiel...
Marsh Posté le 21-12-2018 à 00:33:30
Merci pour vos réponses, pour les livres si vous avez des références je suis preneur.
Marsh Posté le 18-12-2018 à 12:58:13
Bonjour à tous,
J'ai un problème avec une table de hachage et une liste.
J'arrive à créer une table de hachage simple c'est à dire en utilisant le code ci-dessous:
J'arrive à créer une liste contenant plusieurs valeurs en utilisant le code ci-dessous:
Ce que je cherche à faire est de créer une table de hachage me permettant d'obtenir le résultat suivant:
C'est à dire arriver à lier ma tache de hachage avec ma MyCList ou MyDList afin d'avoir une arbre; j'ai essayé la syntaxe suivante sur la 1ere partie:
Mais je n'arrive pas à parser mes listes et à imprimer chaque valeur qui les composent.
Y-a-t-il une syntaxe qui permettrait de nommer les champs du hash ?
En vous remerciant par avance, pour votre aide.
PS: Il ne s'agit pas d'un sujet pour l'école, je ne suis plus étudiant. Je suis juste intéressé par le langage perl qui me permet d'automatiser des tâches répétitives et fastidieuses.