matafan a écrit :
Tu as trouvé mais est-ce que tu as compris ? Il te faut un « -> » après le $hash car dans ton programme $hash n'est pas un hash : c'est une référence à un hash. C'est parce que tu l'a initialisé avec en faisant « $hash->{...} = ... » au lieu de « $hash{...} = ... ». Dans le premier cas tu as un $hash et c'est une référence a un hash anonyme. Dans le deuxième cas tu as un %hash et c'est un hash. Comme en C, la flèche permet de déréfencer. C'est juste un « sucre de syntaxe » : « $hash->{...} » est équivalent à « ${%$hash}{...} ».
Et sinon pour être tout a fait complet : « %hash = ("a" => "A" ) » défini un hash. « $hash = {"a" => "A"} » fait « pointer » $hash vers un hash anonyme. « { ... } » est le contructeur de hash anonyme, comme « [ ... ] » est le constructeur de tableau anonyme. Donc : « @array = (1, 2, 3) » mais « $array = [1, 2, 3] ».
|