====== Context ======
===Force context===
by having a left value from the right type it type !
$a= force scalar context # works with array, list, hash (+ keys +values) and may be other
@a= force array context # works with list, hash (+ keys +values) and may be other, but not with scalar
%a= force hash context # works with array, list, and may be other, but not with scalar
()= force list context # works with array, list, hash (+ keys +values) and may be other, but not with scalar
Alternate :
for scalar context: precede with function: scalar() or scalar
for list context: enclose with : ( )
for array context: enclose with : @{[val0, val1 ]} deref a ref array
for hash context: enclose with : %{{key0, val0, key1, val1 }} deref a ref hash
@array = () =
operator also force
=== and List in SCALAR context===
scalar @array = count of element
scalar (a,2,3) = count of element
===Hash in SCALAR context===
scalar %hash = 0 if empty hash
scalar %hash = used/total” buckets
===Hash in ARRAY or LIST context context===
@array = $hash (key0, value0, key1, value1, ....)
@array = keys $hash (key0, key1, ....)
@array = values $hash (value0, value1, ....)