Dans un hash comme dans un array, tu ne peux mettre que des scalaires, c'est à dire des string, des int ou des références. Ainsi pour faire des "tableaux à plusieurs dimensions" ou autres structures complexes, on met des références.
Dans ton cas, ça donne ça :
$dfields->{header}{fields} = \@fields;
\@fields est une référence vers @fields.
Par contre méfie-toi, si tu modifies @fields par la suite, $dfields->{header}{fields} sera modifié aussi.
Pour éviter ça, il faut créer une copie, une syntaxe efficace pour ce faire est :
$dfields->{header}{fields} = [ @fields ];
--
Jedaï
Partager