in reply to How to code a complex AoH?
Hello iatros, and welcome to the Monastery!
Each element of a hash (or of an array, for that matter) must be a scalar value. So if you want to store an array of values in the points slot of a hash, you have to store a pointer to that array:
$student = { ... points => \@points, };
or
$student = { ... points => [@points], };
See perlreftut and perldsc.
Update: To elaborate on stevieb’s point: if the array @points contains the elements ('a', 'b', 'c', 'd'), then the assignment
$student = { ... points => @points, };
is effectively this:
$student = { ... 'points', 'a', 'b', 'c', 'd', };
or, equivalently,
$student = { ... points => 'a', b => 'c', 'd', };
— which explains why the compiler is warning about an odd number of elements in the hash: the last array value ('d') becomes a hash key with no associated value.
Hope that helps,
| Athanasius <°(((>< contra mundum | Iustus alius egestas vitae, eros Piratica, |
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: How to code a complex AoH?
by haukex (Archbishop) on Mar 25, 2017 at 15:25 UTC | |
|
Re^2: How to code a complex AoH?
by AnomalousMonk (Archbishop) on Mar 25, 2017 at 18:01 UTC | |
|
Re^2: How to code a complex AoH?
by iatros (Novice) on Mar 30, 2017 at 17:26 UTC |