Hello, (A) completion and documentation suggest straight creation: A Create an array parameter with `${...=...}', `${...:=...}' or `${...::=...}'. If this flag is repeated (as in `AA'), create an associative array parameter. Assignment is made before sorting or padding; if field splitting is active, the word part is split before assignment. The name part may be a subscripted range for ordinary arrays; the word part must be converted to an array, for example by using `${(AA)=name=...}' to activate field splitting, when creating an associative array. This test: % typeset -a overwrite_me=( 1 ); () { var_name="overwrite_me"; : ${(PA)var_name::=}; }; echo $overwrite_me"."${(t)overwrite_me} .array % () { local -a overwrite_me=( 1 ); () { var_name="overwrite_me"; : ${(PA)var_name::=}; }; echo $overwrite_me"."${(t)overwrite_me} } .array-local shows that parameter is reused if it exists, even if it exists on lower scoping level. That's useful when coding, the patch adds one sentence that clarifies this. -- Sebastian Gniazdowski psprint2@fastmail.com