Hello The current syntax for hashes doesn't allow interaction between arrays and hashes. The syntax that would allow it is simple dump of the keys and values alternating and acceptance of such series of values at assignment of the hash.
This syntax is long used in Zsh. Example code: declare -a array=( a 1 b 2 c 3 ) declare -A hash=( ${array[@]} ) declare -p hash => typeset -A hash=( [a]=1 [b]=2 [c]=3 ) declare -a array2=( ${(kv)hash[@]} ) declare -p array2 ==> typeset -a array2=( a 1 b 2 c 3 ) This has many useful use cases e.g. when doing an advanced, fork-(i.e. also: subshell) free shell coding. Consider e.g. a fork-free serialization of an array: array=( val1 "val2*[special-chars]" ) printf -v serialized "%q " "${array[@]}" eval "deserialized=($serialized)" With the new syntax it would be possible to serialize and deserialize hashes in the same way (the *-char is the example new syntax to dump k&v alternating): declare-A hash=( [key1]=val1 ['key2*[special-chars]']=val2 ) printf -v serialized "%q " "${*hash[@]}" typeset -A deserialized_hash eval "deserialized_hash=($serialized)" This is a one particular example use case, but I'm using array<->hash interaction on a regular basis in Zsh. The syntax-extension is of most-easy kind, it actually doesn't change anything (besides the *-like addition to the var flags, i.e. the ${*hash[@]}, to dump k&v-s), it's just about allowing hashes to accept series of values, being the k&v-s alternating. Is there a chance for such an extension? PS. The *-symbol might be the right choice, as it inherits the glob meaning "match all", and this translates to the hash variable "give back all, i.e. values AND keys". -- Sebastian Gniazdowski News: https://twitter.com/ZdharmaI IRC: https://kiwiirc.com/client/chat.freenode.net:+6697/#zplugin Blog: http://zdharma.org