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, |
In reply to Re: How to code a complex AoH?
by Athanasius
in thread How to code a complex AoH?
by iatros
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |